我在主机上有一些php脚本,但托管时间与我的本地时间不同(GMT+8)如何将正确的 time() 脚本设置为 GMT+8 ?
当我使用:
<?
echo time(); //it show me the hosting time;
?>
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
你的假设是不正确的:
int time ( void )
返回自 Unix 时代(1970 年 1 月 1 日 00:00:00 GMT)。
Unix时代是一个固定的时刻。如果您确实收到无效的时间戳,则您的托管服务提供商没有关心设置服务器的时钟。
如果你想做体面的时区感知日期处理,我建议你了解日期时间类和朋友,并且:
-
使用命名时区(
Europe/Madrid
)而不是UTC偏移量(+01:00
),因为它们考虑了夏令时。 -
将应用的时区设置为默认时区,这样就无需每次都指定时区:
date_default_timezone_set("Europe/Helsinki");
-
永远不要自己做约会数学(例如,不要手动添加 86400 秒来增加一天)。
您必须在 php 中设置本地时间
功能date_default_timezone_set
支持的时区列表
例:
date_default_timezone_set("America/Fortaleza");
echo time(); // Local Time in America/Fortaleza
将 28800(8 小时转换为秒)添加到 time() 的输出中
<?php echo (time()+28800); ?>
我不确定,但是,time() 返回相当于 GMT 的时间戳,因此,添加 8 小时的时间戳将为您提供 GMT+8。同样,您甚至可以减去时间
使用 date_default_timezone_set() 函数,例如
date_default_timezone_set('Asia/Dhaka');