缺少半小时的时区

时间:2015-08-27 22:20:46

标签: php date

在PHP中,我使用DateTimeZone::listIdentifiers()来获取用户选择的时区列表。这似乎工作正常,但从这个列表中缺少的是半小时时区。

尤其是纽芬兰,伊朗和印度。任何人都知道如何让他们回来,为什么他们失踪? PHP docs show them as "don't use these timezones"但它们仍在世界范围内使用,它们似乎没有列在the "valid" list anywhere here.

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

只是在这里猜测,但看起来默认的$what参数是DateTimeZone::ALL,并且您希望使用现在仅存在的标识符以实现向后兼容性 - 因此您应该使用DateTimeZone::ALL_WITH_BC

print_r(DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC));

请注意,the manual确实说不要使用它们。

就伊朗而言,您可以将其替换为亚洲/德黑兰时区。

答案 1 :(得分:0)

在扫描420左右的列表时,我似乎忽略了一些半小时的时区。最终的结果是,是的,时区就在那里。在IANA列表中,他们都改变了他们的历史名称。

在IANA意味着如何使用链接的时区以及PHP如何实现它时,似乎有一个微妙的区别,现在的范围是“绝对不是一个错误,但在文档中显而易见”并且一种解决方案。

https://bugs.php.net/bug.php?id=66102

这个Github搜索也更加清晰: https://github.com/eggert/tz/search?utf8=%E2%9C%93&q=Newfoundland

所以,他们在那里。我仍然有一些关于可用性的担忧,以及我们的用户在寻找他们的时区时是否会理解选择America / St_Johns之类的东西。我们正在与用户就此进行一些研究。