将Unix时间戳转换为Locale时区

时间:2011-05-05 23:56:28

标签: php unix-timestamp

所有

如何在本地时区中将unix时间戳转换为日期和时间。对于timestamp = 1303374724716,PHP的date ('r', $timestamp)函数给我Sun, 16 May 2032 22:11:37 +0000,而epoch converter正确转换为
GMT: Thu, 21 Apr 2011 08:32:04 GMT
Your timezone: Thu Apr 21 2011 04:32:04 GMT-0400 (Eastern Daylight Time)

我见过php.ini文件,默认时区是UTC。我不明白为什么这个值甚至与GMT / UTC时间不匹配。任何人都可以帮我转换到我当地的时区,即New_York。

2 个答案:

答案 0 :(得分:3)

这是因为给出的时间戳以毫秒为单位。

执行:

$timestamp = floor(1303374724716/1000);

一切都会按预期工作。

答案 1 :(得分:2)

文档说:

  

timestamp是可选的,默认为time()的值。

如果你跑

print time();

你会得到像1304640077这样的数字。

请注意,它比您尝试传递的数字小1000倍。

换句话说,你应该以秒为单位传递一个值,而不是几毫秒。

要设置时区,请使用date_default_timezone_set,例如

date_default_timezone_set('America/New_York');

或在php.ini文件中设置date.timezone