0

我有来自世界各地的用户使用我们的系统。他们每个人都选择了他们的本地时区(记录为 UTC,例如 UM8 等)

我们所有的数据都使用 UTC 作为标准保存,因此可以比较所有数据。

我可以使用 codeigniter 的 gmt_to_local() 函数(http://codeigniter.com/user_guide/helpers/date_helper.html)向用户显示本地日期/时间,但它要求 DST = True/False。

我如何查看时区以查看它当前是否正在观察 DST?

4

2 回答 2

4

除了科尔宾的回答(对他+1):

如果您有真正的时区名称,那么您可以使用如下代码

$date = new DateTime('now', new DateTimeZone('Pacific/Auckland'));
echo $date->format('I'); // 0

$date = new DateTime('now', new DateTimeZone('Europe/London'));
echo $date->format('I'); // 1

这意味着在奥克兰(新西兰)它不是 DST,而在伦敦它是

于 2012-05-17T10:04:20.393 回答
2

你不能。如果您只是记录了 UTC 偏移量,那么您没有足够的信息。您需要一个特定于国家/地区的时区,因为当不是 DST 时,两个国家/地区可能是 UTC X,然后只有一个国家/地区转移到不同的偏移量。

作为一个具体的例子,当 DST 不生效时,纽约和哥伦比亚都是 UTC -5。在 DST 期间,纽约更改为 UTC -4。所以,如果你有 UTC -5,你怎么知道你是否应该在没有位置信息的情况下使用 UTC -4(纽约会切换,这个 DST=true,但哥伦比亚不会)?这是一个相当糟糕的例子,但首先想到的两个位置:)。

于 2012-05-17T10:00:52.873 回答