我正在开发一个php(codeigniter)项目。我在时区做了很多工作来转换不同时区和服务器时区之间的时间。
我知道如何将php时区标识符转换为其缩写(如Asia / Calcutta to IST)。但是现在,我需要扩展这个缩写(印度标准时间)。
有什么方法可以在php代码或任何web服务中进行转换吗?这是我完全掌握时区编程的最后一步! :)
编辑:正如一位回答者所指出的,缩写可能含糊不清......但时区标识符并非如此。那么我可以直接将“亚洲/加尔各答”转换为“印度标准时间”吗?这没有任何含糊之处..
答案 0 :(得分:5)
一般情况下,你不能这样做,因为它不明确 - 相同的缩写用于不同的时区。
示例:
即使是IST也不是唯一的:
答案 1 :(得分:1)
时区缩写,时区偏移和时区扩展之间没有一对一的映射关系。例如,CDT
代表Central Daylight Time
,它映射到UTC+10:30
(澳大利亚)和UTC-5
(北美)。它具有相同的缩写,但映射到不同的大陆和时间偏移。
同样,CST
为Central Standard Time
和Central Summer Time
,并映射到以下3个偏移:UTC+9:30
,UTC-6
和UTC+10:30
IST
也是Irish Summer Time
并映射到UTC+1
所以,回答你的问题,不,你不能这样做。如果您真的想要掌握时区编程,请阅读相同的ISO规范。
答案 2 :(得分:1)
是的,(几乎)根本没有歧义。几乎是因为根据夏令时和政治变化,时区标识符也可能映射到几个缩写。在PHP中,您可以使用@Munim :啊......我不知道这件事。如果是这样的话,你呢? 知道如何将亚洲/加尔各答这样的时区标识符转换为印度语 标准时间?那里没有歧义..
DateTimeZone::listAbbreviations()
(但这个不是非常可靠,因为它显示自tzdb开始以来使用的所有缩写)或DateTimeZone::getTransitions()
- 这个更好,因为如果你向后遍历数组并返回未观察DST的第一个转换abbr
。
答案 3 :(得分:0)
Maye你应该看看这个php函数timezone_name_from_abbr()