使用时区格式化Unix时间戳?

时间:2013-07-12 10:09:48

标签: php

让我说我的Unix时间戳为1373623247.现在我明白时间戳只是X以来的几秒钟。我遇到的问题是格式化。

我使用的服务器托管在德国,但是我在英国,所以输出是12-07-13 12:01:01,而实际上它只是11:01:01。

我使用的代码如下:

$date = 1373623247;
echo date("j-m-y h:i:s",$date);

我所做的是使用date_create和timezone,如下所示:

$date1 = date("j-m-y h:i:s",$date);
$dateobj = date_create("$date1", timezone_open('Europe/London'));
echo date_format($dateobj,"j-m-y h:i:s") . "\n";

我现在的问题是,它实际上是将日期调整为明天,并没有改变时间!

1 个答案:

答案 0 :(得分:2)

您根本无需涉及date

$date = 1373623247;
$dateobj = date_create_from_format("U", $date);
date_timezone_set($dateobj, timezone_open('Europe/London'));
echo date_format($dateobj,"j-m-y h:i:s") . "\n";

此代码使用DateTime format specifier将时间戳直接转换为U实例。使用date时,它更短更干净,因为您根本不需要担心服务器的默认时区。

专业提示:datestrtotime获得了很多报道,在某些情况下非常方便,但DateTime可以自行完成所有工作,恕我直言会导致代码更多可维护性。