请看我的代码<?php
//-----处理通过GET方法提交的变量;开始
if($_GET[year]=="")
{
$_GET[year]=date("Y");
}
if($_GET[month]=="")
{
$_GET[month]=date("n");
}
$month=$_GET[month];
$year=$_GET[year];
//-------处理通过GET方法提交的变量;结束
if($year<1971)
{
echo "Error!";
echo "<a href=$_SERVER[PHP_SELF]>Back</a>";
exit();
}
$d=date("d");
$FirstDay=date("w",mktime(0,0,0,$month,1,$year));//取得任何一个月的一号是星期几,用于计算一号是由表格的第几格开始
$bgtoday=date("d");
?>
<div id="cal">
<div id="year_month">
<?php
//-----当月份超出1至12时的处理;开始
if($month<1)
{
$month=12;
$year-=1;
}
if($month>12)
{
$month=1;
$year+=1;
}
//----当月份超出1至12时的处理;结束
echo $year."年".$month."月";
?>
</div>
<div id="weekly"><ul><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul></div>
<div id="eachday"><ul>
<?php
function bgcolor($month,$bgtoday,$today_i,$year)//用于计算当日的背景颜色
{
$show_today=date("d",mktime(0,0,0,$month,$today_i,$year));
$sys_today=date("d",mktime(0,0,0,$month,$bgtoday,$year));
if($show_today==$sys_today)
{
$bgcolor = "class=libg";
}
else
{
$bgcolor="";
}
return $bgcolor;
}
for($i=0;$i<=$FirstDay;$i++)//此for用于输出某个月的一号位置
{
for($i;$i<$FirstDay;$i++)
{
echo "<li> </li>\n";
}
if($i==$FirstDay)
{
echo "<li ".bgcolor($month,$bgtoday,1,$year).">1</li>\n";
if($FirstDay==6)//判断1号是否星期六
{
echo "</ul></div>";
}
}
}
$countMonth=date("t",mktime(0,0,0,$month,1,$year));//某月的总天数
for($i=2;$i<=$countMonth;$i++)//输出由1号定位,随后2号直至月尾的所有号数
{
echo "<li ".bgcolor($month,$bgtoday,$i,$year).">$i</li>\n";
if(date("w",mktime(0,0,0,$month,$i,$year))==6)//判断该日是否星期六
{
echo "</li>\n";
}
}
?>
</ul></div>
</div>现在的情况是能正常显示,但是比较郁闷的是显示的时间是当前服务器的时间,而非正确的北京时间(因为我用的这个空间是国外的,所以显示的是国外的那台服务器的和四溅),比如今天是6月19日,可是显示的是6月18日,我想让上面的程序显示北京时间,该怎么做呢?我在最上面加了if( function_exists("date_default_timezone_set") )date_default_timezone_set ("Asia/Chongqing");但是还是显示的是服务器时间,没有变化,请教~~~
//-----处理通过GET方法提交的变量;开始
if($_GET[year]=="")
{
$_GET[year]=date("Y");
}
if($_GET[month]=="")
{
$_GET[month]=date("n");
}
$month=$_GET[month];
$year=$_GET[year];
//-------处理通过GET方法提交的变量;结束
if($year<1971)
{
echo "Error!";
echo "<a href=$_SERVER[PHP_SELF]>Back</a>";
exit();
}
$d=date("d");
$FirstDay=date("w",mktime(0,0,0,$month,1,$year));//取得任何一个月的一号是星期几,用于计算一号是由表格的第几格开始
$bgtoday=date("d");
?>
<div id="cal">
<div id="year_month">
<?php
//-----当月份超出1至12时的处理;开始
if($month<1)
{
$month=12;
$year-=1;
}
if($month>12)
{
$month=1;
$year+=1;
}
//----当月份超出1至12时的处理;结束
echo $year."年".$month."月";
?>
</div>
<div id="weekly"><ul><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul></div>
<div id="eachday"><ul>
<?php
function bgcolor($month,$bgtoday,$today_i,$year)//用于计算当日的背景颜色
{
$show_today=date("d",mktime(0,0,0,$month,$today_i,$year));
$sys_today=date("d",mktime(0,0,0,$month,$bgtoday,$year));
if($show_today==$sys_today)
{
$bgcolor = "class=libg";
}
else
{
$bgcolor="";
}
return $bgcolor;
}
for($i=0;$i<=$FirstDay;$i++)//此for用于输出某个月的一号位置
{
for($i;$i<$FirstDay;$i++)
{
echo "<li> </li>\n";
}
if($i==$FirstDay)
{
echo "<li ".bgcolor($month,$bgtoday,1,$year).">1</li>\n";
if($FirstDay==6)//判断1号是否星期六
{
echo "</ul></div>";
}
}
}
$countMonth=date("t",mktime(0,0,0,$month,1,$year));//某月的总天数
for($i=2;$i<=$countMonth;$i++)//输出由1号定位,随后2号直至月尾的所有号数
{
echo "<li ".bgcolor($month,$bgtoday,$i,$year).">$i</li>\n";
if(date("w",mktime(0,0,0,$month,$i,$year))==6)//判断该日是否星期六
{
echo "</li>\n";
}
}
?>
</ul></div>
</div>现在的情况是能正常显示,但是比较郁闷的是显示的时间是当前服务器的时间,而非正确的北京时间(因为我用的这个空间是国外的,所以显示的是国外的那台服务器的和四溅),比如今天是6月19日,可是显示的是6月18日,我想让上面的程序显示北京时间,该怎么做呢?我在最上面加了if( function_exists("date_default_timezone_set") )date_default_timezone_set ("Asia/Chongqing");但是还是显示的是服务器时间,没有变化,请教~~~
<iframe src="http://s.time.org.cn/date/#color:ff0000;font-size:9pt" width=150 height=20 frameborder=0 scrolling=no allowTransparency=true></iframe>
还有其他办法吗?
说得很清楚,如果不能php.ini,在代码里面加
<?
//设置时区
date_default_timezone_set('PRC');
?>
你给php.ini文件所在文件夹+权限
sudo chmod 777 文件夹名称