0

假设我的 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";

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

4

1 回答 1

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实例。不使用它既短又干净,因为您根本不需要担心服务器的默认时区。U date

专业提示:date获得strtotime更多覆盖,在某些情况下非常方便,但DateTime可以独立完成所有操作,恕我直言,代码更易于维护。

于 2013-07-12T10:14:15.087 回答