2011-01-21 63 views
3

我认为这是一个愚蠢的问题,但似乎我找不到答案。获取UNIX时间戳的正确时间

我有这个时间戳:1295598602.

在我的PHP脚本我有:

$日期=日期( 'Y-M-d',1295598602); $ hour = date('H',1295598602)。 ':00';

这将返回:

日期:2011-01-21
小时:03:00

现在我去了一个在线转换网站进行测试。我使用this one。 2011 但似乎此时间戳值是

周五,1月21日8时30分02秒GMT现在

,哪一个是正确的?

+3

这将取决于你的服务器的时区,以及在线服务 – 2011-01-21 09:14:50

回答

5

使用正确的时区:

>> 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' 
4

在GMT/UTC(他们几乎but not quite完全一样),其时间戳确实是周五,2011年1月21日8点30分02秒GMT。

如果你在不同的时区,但总是希望格林威治时间,你需要使用gmdate()函数,而不是date()

+0

不是真的。只需设置正确的时区。 – Mchl 2011-01-21 09:25:46

+0

date_default_timezone_set()仅在PHP 5.1.0及更高版本中使用,可能无法使用。 – Alnitak 2011-01-21 09:27:31

0

根据date()功能描述,

时间戳是可选的,默认 的时间的值()。

并根据time()函数描述,它返回GMT时间戳。

因此,PHP不会转换到您的时区,而onlineconversion.com不会。

1

都正确。在PHP代码片段中调整时区。尝试date_default_timezone_set('UTC');以获得适当的未调整值。

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