【问题标题】:Is there any way by which I can get TimeZone value using time stamp有什么方法可以使用时间戳获取 TimeZone 值
【发布时间】:2020-07-02 13:05:52
【问题描述】:

这是我拥有的价值,

Sun Mar 29 2020 02:55:00 GMT+0530

我想得到,例如

亚洲/加尔各答

作为输出。提前致谢。

【问题讨论】:

  • 还是亚洲/科伦坡? (那天也是 +05;30。)

标签: time timezone momentjs angular-moment moment-timezone


【解决方案1】:

偏移不表示区域

使用时间戳获取 TimeZone 值

没有。

您无法根据偏移量确定时区。

许多时区可以共享相同的 UTC 偏移量(本初子午线之前或之后的小时-分钟-秒数)。

参见维基百科中的list of time zone names。单击列标题以按偏移量排序。注意几个区域共享相同偏移的频率。

具体到您的示例,请注意我们目前有两个区域巧合地共享比 UTC 早五个半小时的偏移量:

  • Asia/Kolkata(印度)
  • Asia/Colombo(斯里兰卡)

因此,如果没有进一步的输入,就无法知道您的输入字符串的作者是印度时间还是斯里兰卡时间。

顺便说一句,名称Asia/Calcutta 已更改为Asia/Kolkata。如果您的系统没有这样的名称,那么您的 tzdata 已经过时了好几年。在操作系统、数据库服务器(如 Postgres)和运行时(如 Java)中,始终保持 tzdata 的所有副本是最新的。

另一个复杂因素:政治家经常更改其管辖范围内使用的偏移量。

因此,尽管今天整个印度都使用 +05:30 的相同偏移量,但情况并非总是如此,未来也不太可能总是如此(基于区域在世界)。

ISO 8601

ISO 8601 标准定义了许多将日期时间值表示为文本的合理格式。

2020-01-23T12:34:56.123456789+05:30

Java 8 中内置的 java.time 框架通过在方括号中附加时区名称,明智地扩展了其中一种格式。如果可行,我建议使用这种格式。

2020-01-23T12:34:56.123456789+05:30[Asia/Kolkata]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2010-10-30
    • 2021-05-18
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    相关资源
    最近更新 更多