DST 和 PHP 日期和时间戳

Posted

技术标签:

【中文标题】DST 和 PHP 日期和时间戳【英文标题】:DST and PHP Date and Timestamps 【发布时间】:2016-04-05 18:14:32 【问题描述】:

我已经在列表中搜索了先前的答案,但找不到。我们正在使用 php 4.4.8 并且需要 PHP 4 的答案。我们有一个时间戳数组 [$d] 表示:

1478404800 2016-11-06 00:00:00

1478494800 2016-11-07 00:00:00

2016-11-06 是夏令时到标准时间的过渡日。

我们想要存储一个代表每天下午 1:00 的时间戳,所以我们做到了

$e2 = $d+46800

46800 相当于 13 小时的秒数。

date("D d M Y g a I",$e2)

返回:

2016 年 11 月 6 日星期日 12 点 0

2016 年 11 月 7 日星期一下午 1 点 0

后面的 0 是 DST 指示符。 11 月 6 日似乎将 DST 指示为 STD“回退”1 小时。我们不希望 DST 被反映。

所以问题是:

    我们如何获得不反映 DST 到 STD 的 11 月 6 日答案。

    如果这是夏令时,为什么是一天? 11 月 7 日没有得到任何“回退”

用户不在不同的时区,所以我们不必担心时区。

【问题讨论】:

“我们不必担心时区”没有意义。 DST适用于特定时区。整个世界都没有夏令时,拥有夏令时的人并非都在同一日期或一天中的同一时间进行。因此,时区适用于您的问题,或者您的问题不涉及 DST。你不能同时拥有它。 我们所有的用户都在一个时区。我们不需要一个可以跨多个时区使用不同 DST 的解决方案。 了解您使用的哪个时区会有所帮助。 我们在美国/洛杉矶时区。 您使用的是哪个版本?真的吗? 【参考方案1】:

目前尚不清楚您确切要求的是什么,但如果您唯一关心的是 date() 返回值 - 告诉 PHP 创建正确的 UNIX 时间戳:

mktime(13, 0, 0, 11, 6, 2016);

不过,我更担心您在这个日期仍在运行 PHP 4。

【讨论】:

以上是关于DST 和 PHP 日期和时间戳的主要内容,如果未能解决你的问题,请参考以下文章

PHP日期和函数

php日期转时间戳

PHP时间戳和日期相互转换

php获取当前时间和转换格式

在 DST 期间创建时间戳(有点)的问题

php时间戳和日期转换,以及时间戳和星期转换