获取UNIX时间戳的正确小时

时间:2011-01-21 09:11:58

标签: php unix-timestamp

我认为这是一个愚蠢的问题,但似乎我找不到答案。

我有这个时间戳: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

现在,哪一个是正确的?

5 个答案:

答案 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却没有。