【发布时间】:2020-07-02 13:05:52
【问题描述】:
这是我拥有的价值,
Sun Mar 29 2020 02:55:00 GMT+0530
我想得到,例如
亚洲/加尔各答
作为输出。提前致谢。
【问题讨论】:
-
还是亚洲/科伦坡? (那天也是 +05;30。)
标签: time timezone momentjs angular-moment moment-timezone
这是我拥有的价值,
Sun Mar 29 2020 02:55:00 GMT+0530
我想得到,例如
亚洲/加尔各答
作为输出。提前致谢。
【问题讨论】:
标签: time timezone momentjs angular-moment moment-timezone
使用时间戳获取 TimeZone 值
没有。
您无法根据偏移量确定时区。
许多时区可以共享相同的 UTC 偏移量(本初子午线之前或之后的小时-分钟-秒数)。
参见维基百科中的list of time zone names。单击列标题以按偏移量排序。注意几个区域共享相同偏移的频率。
具体到您的示例,请注意我们目前有两个区域巧合地共享比 UTC 早五个半小时的偏移量:
Asia/Kolkata(印度)Asia/Colombo(斯里兰卡)因此,如果没有进一步的输入,就无法知道您的输入字符串的作者是印度时间还是斯里兰卡时间。
顺便说一句,名称Asia/Calcutta 已更改为Asia/Kolkata。如果您的系统没有这样的名称,那么您的 tzdata 已经过时了好几年。在操作系统、数据库服务器(如 Postgres)和运行时(如 Java)中,始终保持 tzdata 的所有副本是最新的。
另一个复杂因素:政治家经常更改其管辖范围内使用的偏移量。
因此,尽管今天整个印度都使用 +05:30 的相同偏移量,但情况并非总是如此,未来也不太可能总是如此(基于区域在世界)。
ISO 8601 标准定义了许多将日期时间值表示为文本的合理格式。
2020-01-23T12:34:56.123456789+05:30
Java 8 中内置的 java.time 框架通过在方括号中附加时区名称,明智地扩展了其中一种格式。如果可行,我建议使用这种格式。
2020-01-23T12:34:56.123456789+05:30[Asia/Kolkata]
【讨论】: