我在托管上有一些php脚本,但托管时间与我当地时间不同(GMT + 8) 如何将正确的time()脚本设置为GMT + 8?
当我使用时:
<?
echo time(); //it show me the hosting time;
?>
答案 0 :(得分:5)
time()
将始终返回自纪元以来的秒数。下面的代码将打印两次。
date_default_timezone_set('Europe/London');
echo time();
date_default_timezone_set('America/Cuiaba');
echo time();
Unix时间戳的概念没有按设计携带时区信息。无论时区如何,给定时间戳始终相同。 (自1970-01-01 00:00:00 UTC以来的秒数)如果要表示考虑了时区的时间戳,您将使用当前时区的偏移量调整结果日期。
因此,当使用PHP的date
(确实反映时区信息)的'c'格式选项时,您会看到相同的时间戳的不同表示
date_default_timezone_set('Europe/London');
echo time();
echo date('c')
date_default_timezone_set('America/Cuiaba');
echo time();
echo date('c');
将输出:
1384259474
2013-11-12T12:31:14+00:00
1384259474
2013-11-12T09:31:14-03:00
答案 1 :(得分:1)
您的假设是not correct:
int time ( void )
以秒为单位返回以秒为单位测量的当前时间 Unix Epoch(1970年1月1日00:00:00 GMT)。
Unix Epoch是一个固定的时刻。如果您确实收到了无效的时间戳,那么您的托管服务提供商就无法设置服务器的时钟。
如果你想进行体面的时区感知日期处理,我建议你了解DateTime班级和朋友,并且:
使用指定的时区(Europe/Madrid
)而不是UTC偏移量(+01:00
),因为它们会考虑DST。
将应用的时区设置为默认值,因此您无需每次都指定它:
date_default_timezone_set("Europe/Helsinki");
永远不要自己做数学计算(例如,不要手动添加86400秒来增加一天)。
答案 2 :(得分:0)
您必须在php中设置本地时间
示例:
date_default_timezone_set("America/Fortaleza");
echo time(); // Local Time in America/Fortaleza
答案 3 :(得分:0)
将28800(8小时转换为秒)添加到time()的输出
<?php echo (time()+28800); ?>
我不确定但是,time()返回的时间戳等同于GMT,因此添加8小时的时间戳会给你GMT + 8。同样,你甚至可以减去时间
答案 4 :(得分:-3)
您可以使用date_default_timezone_set()函数,例如
date_default_timezone_set('Asia/Dhaka');