我认为这是一个愚蠢的问题,但似乎我找不到答案。
我有这个时间戳:1295598602。
在我的PHP脚本中,我有:
$ date = date('Y-m-d',1295598602); $ hour = date('H',1295598602)。 ':00';
返回:
日期:2011-01-21
时间:03:00
现在我去了一个在线转换网站进行测试。我用了this one。 但似乎对于这个时间戳值,它是
2011年1月21日星期五08:30:02 GMT
现在,哪一个是正确的?
答案 0 :(得分:6)
使用正确的时区:
>> date_default_timezone_get();
'UTC'
>> date('Y-m-d h:i:s',1295598602);
'2011-01-21 08:30:02'
>> date_default_timezone_set('CET');
true
>> date('Y-m-d h:i:s',1295598602);
'2011-01-21 09:30:02'
>> date_default_timezone_set('UTC');
true
>> date('Y-m-d h:i:s',1295598602);
'2011-01-21 08:30:02'
答案 1 :(得分:4)
GMT / UTC(他们几乎 but not quite完全一样)时间戳确实是星期五,2011年1月21日08:30:02 GMT。
如果您位于不同的时区但始终需要GMT,则需要使用gmdate()
功能代替date()
。
答案 2 :(得分:1)
两者都是正确的。在代码片段中,PHP会根据时区进行调整。尝试使用date_default_timezone_set('UTC');
获取正确的未经调整的值。
答案 3 :(得分:1)
另一个选项是为脚本设置默认时区。
例如,
date_default_timezone_set('Europe/London');
$timestamp = '1295598602';
echo date('Y-m-d H:i:s', $timestamp);
可以获得与在线转换工具显示的结果相同的结果。
PHP中有许多与时区相关的功能,允许您修改显示的时区。
您可以查看PHP文档以获取选项列表:http://www.php.net/manual/en/ref.datetime.php
答案 4 :(得分:0)
根据date()功能描述,
timestamp是可选的,默认为 time()的值。
根据time()函数描述,它返回GMT时间戳。
因此,PHP会转换到您的时区,而onlineconversion.com却没有。