0

我对日期和 strtotime 有一个恼人的问题。

echo date('Y-m-d H:i', strtotime('1970-01-01 00:00:00'));

回报:

1970-01-01 01:00:00

我究竟做错了什么?1970-01-01 02:00:00输出正确1970-01-01 02:00,但我正在尝试将(外国)格式化日期转换为时间戳,然后输出新的日期格式。

如果不是这样,正确的做法是什么?

已解决:该示例有效,因为我的问题是返回 1970-01-01 01:00 (GMT+1) 的无效日期字符串(布尔值 false)。结案

4

1 回答 1

1

好像您在 Windows 下,不支持date.

因此strtotime('1970-01-01 00:00:00')返回负值并由 -negative 格式化date()0因此您获得的偏移量等于您的 TZ 偏移量。

对于is1970-01-01 02:00:00的结果(距 UTC 时间为 1 小时 + 1 小时),并且该值为正值,因此可以正常工作。strtotime3600

PS:正如@Mark Ba​​ker 指出的那样 - 它很久以前就已经修复了,但它出现在 Windows 版本中,这是对该案例的唯一解释

PPS:根据问题中的评论 - 似乎一切正常(不确定 OP 如何得到错误的值)

于 2012-09-02T22:40:49.353 回答