让我说我的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";
我现在的问题是,它实际上是将日期调整为明天,并没有改变时间!
答案 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
时,它更短更干净,因为您根本不需要担心服务器的默认时区。
专业提示:date
和strtotime
获得了很多报道,在某些情况下非常方便,但DateTime
可以自行完成所有工作,恕我直言会导致代码更多可维护性。