PHP date_create没有显示正确的小时

时间:2013-12-16 10:37:03

标签: php time format unix-timestamp

我有一个Unix时间戳,我想转换为常规时间(String)。 我的Unix时间戳:

1385767232382

我的剧本:

$date = date_create(date('c', "1385767232"), new DateTimeZone('PST'));
echo date_format($date, 'Y-m-d H:i');

我从Unix时间戳中删除了最后三位数,因为我得到了一个非常奇怪的时间,所以我通过删除最后三位数将其从毫秒改为秒。

脚本返回的日期:

2013-11-29 23:20

应该返回的日期:

2013-11-29 15:20

我尝试了其他几个日期,但它们都是一样的。只有时间不好,其余的都没事。

提前谢谢。

编辑:03:20 - > 15:20

4 个答案:

答案 0 :(得分:1)

时区不正确,因为当第一个参数指定时区时,忽略date_create的第二个参数(请参阅docs中的注释)。在您的情况下,使用的格式指定时区,因为date不明确接受时区是默认的系统时区而不是PST。

这是正确的方法:

$d = date_create('@1385767232');
date_timezone_set($d, new DateTimeZone('PST'));

echo $d->format('Y m d H:i:s');  // 2013 11 29 15:20:32

答案 1 :(得分:0)

试试这个

echo date("Y-m-d",strtotime(1385767232382));

答案 2 :(得分:0)

你可以这样做:

echo(date("Y-m-d H:i", "1385767232"));

答案 3 :(得分:0)

为什么你要做额外的工作,如删除3 digi ..?

以下实际给出正确的.. $ date = date_create(date('c',“1385767232”),new DateTimeZone('PST')); echo date_format($ date,'Y-m-d H:i');

你遇到麻烦可能正在分析时区,确保这一点。