如何发现特定时区是否正在使用PHP观察DST?

如何发现特定时区是否正在使用PHP观察DST?,php,Php,我有来自世界各地的用户使用我们的系统。他们每个人都选择了自己的本地时区(记录为UTC,如UM8等) 我们所有的数据都使用UTC作为标准进行保存,因此所有数据都可以进行比较 我可以使用codeigniter的gmt_to_local()函数()向用户显示本地的日期/时间,但它要求DST=True/False 如何查找时区以查看它当前是否正在观测DST?您不能。如果只记录UTC偏移量,则没有足够的信息。您需要一个特定于国家/地区的时区,因为当不是DST时,两个国家/地区可能是UTC X,然后只有一个

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

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

我可以使用codeigniter的gmt_to_local()函数()向用户显示本地的日期/时间,但它要求DST=True/False


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

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


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

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


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

以及除了科尔宾的回答(+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,在伦敦它是

,除了科尔宾的回答(+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,而在伦敦它是

如果您没有存储他们的时区,那么为什么不将UTC推到浏览器上并用javascript将其更改为本地时间呢。你可能不知道他们的时区,但客户端知道。如果你还没有存储他们的时区,为什么不将UTC推送到浏览器并用javascript将其更改为本地时间。你可能不知道他们的时区,但客户知道。很好,这很有道理。我现在正在设计新版本的应用程序,所以我会让他们从时区名称列表中选择。太好了,这很有意义。我目前正在设计新版本的应用程序,所以我会让他们从时区名称列表中进行选择。