因我购买的是美国主机商提供的主机,所以在PHP中使用date()直接获取得到的时间是美国当地时间。
介于此,本人便开工写了这个时区变换函数 gettime();
用于消除国内用户的时差感。
//美国纽约时间转换为北京时间
//获取美国纽约当地时间 年 月 日 时
function gettime(){
$year = date("Y");
$month = date("m");
$day = date("d");
$hour = date("H");
//闰年判断
if($year % 100 == 0)
if($year % 400 == 0) $lun_year = 1;
else $lun_year = 0;
else if($year % 100 <> 0)
if($year % 4 == 0) $lun_year = 1;
else $lun_year = 0;
//时差变换
$BJ_hour = $hour + 15; //北京时间相对于美国纽约时间要快15小时
if($BJ_hour >= 24) {
$day = $day + 1;
$BJ_hour = $BJ_hour - 24; }
//闰年与非闰年二月最后一天小时数及日子变换
if($month == 2 & $lun_year == 0 &
$day > 28) {
$day = 1;
$month = 3;}
else if($month == 2 & $lun_year == 1
& $day > 29) {
$day = 1;
$month = 3;}
//大小月最后一天日子变换
if(($month == 1 | $month == 3 | $month == 5 | $month == 7 | $month
== 8 | $month == 10) & $day > 31)
{
$day = $day - 31;
$month = $month + 1;}
else if(($month == 4 | $month == 6 | $month == 9 | $month == 11)
& $day > 30) {
$day = $day - 30;
$month = $month + 1;}
else if($month == 12 & $day > 31)
{
$day = $day - 31;
$month = 1;
$year = $year + 1;}
$t = date("$year-$month-$day $BJ_hour:i:s");//获取北京时间
return $t;//返回北京时间}
?>
欢迎指正代码中不足之处。