【发布时间】:2015-05-10 03:12:33
【问题描述】:
我有一个客户端 Web 应用程序,用户必须在其中为他们自己的时区以外的时区创建日期,但我不确定执行此操作的最佳方法。
使用 Moment 时区,我知道如何将时间更改到另一个时区。即,将Nov 18 2013 11:00:00 GMT-0500 转换为Nov 19 2013 03:00:00 GMT+1100。这些仍然代表相同的绝对时间,只是具有不同的“视图”。
我需要做的是转换,尊重夏令时,Nov 18 2013 11:00:00 America/Toronto" 到 Nov 18 2013 11:00:00 Australia/Sydney(这是不同的绝对时间)。
到目前为止,我能想到的唯一方法是创建一个Date,将其序列化为字符串,然后使用 Moment Timezone 解析它,类似于:
localEvent = new Date(2015, 03, 10, 18, 30)
eventStr = localEvent.toString().split('GMT')[0]
# eventStr = 'Fri Apr 10 2015 18:30:00'
event = moment.tz(eventStr, 'Australia/Sydney')
所以现在无论浏览器在哪个时区运行,这段代码都会创建完全相同的时间点。
但这感觉很hacky,有没有更好的方法来做到这一点?
【问题讨论】:
-
你知道时差是多少你需要查一下吗?
-
@WillReese 我需要查一下,因为小时差可能会改变。由于夏令时,在保存小时差和创建日期时间之间的时间,偏移量可能已经改变。
标签: javascript date timezone momentjs