【发布时间】:2017-02-03 02:32:51
【问题描述】:
我正在尝试存储和检索一个日期对象,无论浏览器设置为哪个时区,该对象都应该在保存时保持一致。
例如。我有一个晚上 7 点的 IST,当使用偏移量转换时,它应该返回到我选择的时区的晚上 7 点。 然后,我希望能够检索与浏览器所在时区的下午 7 点相同的时间戳。
我已经弄清楚了第一部分
var date = moment(date);
var localDate = date.clone();
localDate.tz(timezone); // continent/city from momentjs
localDate.tz(timezone);
localDate.add(date.utcOffset() - localDate.utcOffset(), 'minutes');
localDate.toDate();
这最终给了我日期,我可以用它作为 UTC 保存到数据库中(我将它保存在 mongodb 中)
我不确定如何将其反转回本地时区,以便我可以将返回值作为浏览器时区的晚上 7 点。
【问题讨论】:
-
以 UTC 格式保存日期后,您将不再拥有源偏移量。因此,要将其转换回目标时区的同一时间,您需要捕获源偏移量,以便将其转换回源偏移量时间,然后抵消与目标时区的差异。顺便说一句,当时区规则改变或有夏令时的区域时,在不同时区具有相同时间可能会导致歧义。
-
ECMAScript Date 对象是UTC,它是具有偏移量的主机。如果您在特定时区有晚上 7 点并将时区更改为具有不同偏移量的时区,则时间应该更改。否则它代表一个不同的时刻。
标签: javascript mongodb date datetime momentjs