Chr*_*ton 3 php timezone abbreviation
给定像“EST”这样的时区缩写,我可以使用timezone_name_from_abbr
. 是否有返回“东部标准时间”之类的函数?
通常,您不应信任该timezone_name_from_abbr
函数,因为它只返回找到的具有匹配缩写的第一个条目。时区缩写不是唯一的。例如,有 5 个不同的时区共享缩写“CST”。有关歧义的更多示例,请参阅维基百科上的缩写列表。
作为 PHP 的一个特定案例,请考虑缩写“IST”。人们可能希望timezone_name_from_abbr("IST")
返回"Asia/Kolkata"
,代表印度标准时间。然而,它实际上返回"Asia/Jerusalem"
,代表以色列标准时间。两个时区都使用 IST 缩写,但"Asia/Jerusalem"
按字母顺序排在第一位。
考虑到这一点,您现在应该明白为什么函数返回仅给出“EST”的“东部标准时间”也是不切实际的。虽然它可能适用于 EST,但并非在所有情况下都有效。还要考虑到“Eastern Standard Time”是英文的,还有其他不同语言的缩写和文字说明。
有一个项目包含您正在谈论的信息,它来自 Unicode,称为Common Locale Data Repository(或 CLDR)。使用 CLDR 数据,您将能够编写接受时区标识符(例如"America/New_York"
)和语言/区域设置代码(例如"en-US"
)并返回缩写“ET”、“EST”和“EDT”以及名称“东部时间”、“东部标准时间”和“东部夏令时间”。然后,您需要根据您谈论的上下文和/或特定时间来决定使用哪个名称和缩写。
我为 .NET 编写了一个名为TimeZoneNames的库。PHP 需要类似的东西。我不知道为 PHP 推荐哪个特定的,但也许有人已经写了一个,或者您可以通过直接使用 CLDR 源数据来创建您需要的函数。
归档时间: |
|
查看次数: |
900 次 |
最近记录: |