gpt4 book ai didi

PHP date_default_timezone_set() 东部标准时间 (EST)

转载 作者:行者123 更新时间:2023-12-02 23:53:54 27 4
gpt4 key购买 nike

长话短说

是否有 PHP5 识别的官方的、未弃用的时区为东部标准时间,而不是东部夏令时间?

短篇故事长:-P

哇,我不敢相信 PHP 竟然能通过设置时间来实现这样的集群。

我想使用 PHP5 的 date_default_timezone_set() 来设置我的脚本的时区。我想使用标准时间。我希望我的脚本遵守夏令时。我不想每次程序写入时间时都必须使用 gmtime() 并减去 60*60*5 秒。我也不想将该值保存到变量中。设置默认时区更加优雅,并使脚本更容易移植到其他服务器和区域设置。

不幸的是,PHP 要求我在设置默认时区时使用他们愚蠢的“官方时区”之一。有一个“America/New_York”,但我不知道它或任何官方 PHP 时区是否遵守夏令时。通过实验,我发现“America/New_York”确实遵守DST。 “美国/巴拿马”是东部时间,因此不遵守夏令时……但如果巴拿马将来改变对夏令时的看法怎么办? (他们在 1908 年遵守夏令时)

因为巴拿马总是可以改变主意;我只想使用 GMT 或 UTC 偏移量。

然后就是这个...

http://us.php.net/manual/en/timezones.others.php

上面的链接列出了我假设已弃用的时区。 “EST”在那里,但非常以美国为中心,所以我理解为什么它被弃用。 “Ect/GMT-5”也在那里,我完全不知道为什么它被弃用。如果你问我,所有地名时区都应该被弃用,GMT 时区也应该被弃用……但是明白了……“Ect/GMT-5”实际上是错误的!我必须使用“Ect/GMT+5”来获取美国东部标准时间。我很确定我在东海岸并没有比英格兰提前 5 个小时。

已答复?

没有人真正回答这个问题。所以我想我会自己回答。 “不,PHP5 不存在未弃用的时区,可以识别东部标准时间”

很多人告诉我,我应该将日期存储为 UTC 时间,并在我将它们从存储中取出时将其转换为本地时间——这是我已经知道的。问题是,我被雇来只是为了修复脚本的这一小部分,我怀疑这个家伙会让我重写他的整个代码,据说他从 PHP 诞生以来就一直在使用这些代码。

我会不情愿地将功劳归功于向您展示如何正确存储和检索时间的人,以便 future 搜索此内容的人学习如何以正确的方式做到这一点。

最佳答案

你想做的事情不切实际,而且会导致你的用户讨厌你。

命名时区背后的全部原因是为了准确表示本地时间。当本地区域处于 DST 之内时,将“标准”时间表示为本地时间在客观上是不正确的。在该时区内读取时间的任何人都会被误导。

如果您需要存储和使用忽略时区的日期和时间,请使用 UTC 来实现此目的,即存储和正常数学。值得记住的是,即使是古老的 Unix 时间戳也是“1970 年 1 月 1 日午夜过后的秒数,UTC”。

如果您需要表示用户的本地时间,那么您应该允许他们选择本地时区,并在显示时进行转换。。现代 PHP 的 DateTime 和 DateTimeZone 使这个过程变得非常简单。从交互式提示中:

php > $utc = new DateTimeZone('UTC');
php > $amla = new DateTimeZone('America/Los_Angeles');
php >
php > $two_past_midnight = new DateTime('2011-04-05 00:02', $utc);
php > $two_past_midnight->setTimeZone($amla);
php > echo $two_past_midnight->format('Y-m-d H:i:s');
2011-04-04 17:02:00

没有困惑,没有大惊小怪。当我们切换时区时,它会为我们处理数学问题。

<小时/>

或者,如果您真的、真的、真的想要展平 DST 时区,请查看 getTransitionsgetOffsetthe various timezone date() formats 结合,尤其是I。您可以查看结果信息,以查找任何 DST 区域的“标准”版本下一次转换的时间,并相应地进行调整。请记住,不同的区域在不同的时间进行转换,并且并非所有区域的转换量相同......有些区域根本不转换。 I think someone mentioned Indiana已经。

通常我也会在这里提供示例代码,但日期数学让我对暴力充满了永不满足的渴望。谁认为 60、60、24、7、4-6、12 和 52 是可以接受的方式来思考时间和日期,谁就是邪恶的人。值得庆幸的是,他们都已经死了数百年和数千年了。

关于PHP date_default_timezone_set() 东部标准时间 (EST),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com