- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
长话短说
是否有 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 时区,请查看 getTransitions
和 getOffset
与 the 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/
我从文本文件中读取时间戳。这些时间戳采用 UTC-4 格式。我需要将它们转换为美国/东方。 import datetime datetime_utc4 = datetime.datetime.strp
我需要知道如何将 GMT 时区格式的日期时间转换为其他格式,例如 C#、asp.net 2.0 和 dot net framework 2.0 中的东部、太平洋、山区和印度时区格式。 最佳答案 不幸的
我是一名优秀的程序员,十分优秀!