我正在使用带有nodejs的momentjs.com,我试图为多个时区获取unix时间戳,但遗憾的是输出不正确。
代码:
var moment = require('moment-timezone');
var berlin = moment.tz('Europe/Berlin').unix();
var angeles = moment.tz('America/Los_Angeles').unix();
var london = moment.tz('Europe/London').unix();
console.log(berlin);
console.log(angeles);
console.log(london);
输出:
1472241731
1472241731
1472241731
答案 0 :(得分:6)
Unix Timestamp 始终基于UTC。它同时是地球上任何地方的时间戳。
使用moment-timezone更改moment
对象的时区只会影响本地时间值,例如与format
函数(和其他函数)一起使用。它不会改变表示的时刻,因此不会更改基础时间戳。
答案 1 :(得分:0)
要向用户显示不同时区的正确时间,我们可以将时区偏移量添加到Unix UTC时间戳记
const convertToNewTimeZone = (timeInMilliseconds: number, timezone: string) => {
const utcOffset = moment.tz(timeInMilliseconds, timezone).utcOffset();
return moment(timeInMilliseconds)
.add(utcOffset, 'minutes');
};
请注意,如果您正在浏览器中计算时间,则可能必须减去浏览器时区偏移量
newTime.clone().subtract(moment().utcOffset(), 'minutes')