我有一时使用时区的javascript代码,并且无论加载在哪里,我都在尝试计算相对于美国/芝加哥的日期。然后,稍后我将显示相对于用户本地时区的美国/芝加哥发生的时间跨度。
var d = moment("18:00", "HH:mm").tz("America/Chicago");
第31行是我试图将日期设置为相对于美国/芝加哥的日期。日期不重要,时间是18:00。在代码的后面,第36行是我今天的日期在第38行进行检查的地方
无论脚本的加载位置如何,我都试图获取变量datenum来显示相对于美国/芝加哥的今天的日期号。
答案 0 :(得分:0)
使用toDate()
从一瞬间转换为Javascript日期时,您将丢失时区信息,并基于原始时刻的时间戳创建日期,因此您将获得一个对应于18的日期:当地时区为00。在this Github issue中查看更详尽的说明:
Date对象除了使用时不具有时区功能 当地时区。我们对此无能为力。当您使用toDate时, 时区或时区中“代表”其他时间的任何能力 区域被剥离。您留下了及时的原始瞬间 以时间戳[...]
表示您也可能刚刚完成了一下操作(1493092800000).toDate()或 moment.utc(1493092800000).toDate()。一切都一样 日期(1493092800000)。
您可以保留当前时刻,并使用Moment的date()
方法:
var d = moment("18:00", "HH:mm").tz("America/Chicago");
var datenum = d.date();
这将告诉您当地的日期,即芝加哥的18:00。