我有一个遗留的网络应用程序,它将日期存储为 UNIX 时间戳(自 1970 年纪元以来的秒数)。通常像这样的时间戳代表 UTC,但这些时间戳是 UTC-8。看起来它从来没有考虑过夏令时 (DST)。我可以在服务器上将它转换为 UTC 并发送给客户端,但我想知道是否有仅 javascript 的解决方案。
示例输入:
1399335987
示例输出:
"2014-05-05T16:26:27-07:00" // Pacific Daylight Time (PDT)
客户端应根据其本地机器显示日期/时间。我研究了使用 momentjs但是我找不到如何从一个数字构造一个日期,而这个数字已经不是 UTC 了。这可能吗?
最佳答案
是的,这是可能的,因为 unix 时间戳是 UTC,Moment Timezone ( http://momentjs.com/timezone/ )
moment
.unix(1399335987)
.tz('MST')
.format('YYYY-MM-DDTHH:mm:ssZ');
你得到
"2014-05-05T17:26:27-07:00"
注意这里我使用的是MST
,你应该可以使用任何你想要的时区,通过Timezone Data Builder ( http://momentjs.com/timezone/data/ )
实际上,默认情况下,moment 会在本地时间进行解析和显示。
这意味着,只有当您处于不同的时区(实际上是偏移量)并且仍想获得 MST 的本地时间时,才需要将时区设置为 MST。
否则,moment.unix(1399335987).format('YYYY-MM-DDTHH:mm:ssZ')
就可以了。
关于javascript - 将带有时区的 unix 时间戳转换为 javascript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483787/