1

不知何故,我试图获取 America/New_York 的时区(我的语言环境时间是从 EST 开始的 -1 小时)。但是当我使用时,我总是在同一时间

moment(new Date()).tz("America\New_York").toDate()

我使用了错误的方法还是发生了什么?有人可以帮帮我吗?

这是 jsFiddle 的链接: https ://jsfiddle.net/Lgr3qdjf/

4

2 回答 2

1

根据这个问题,momenttoDate总是返回带有系统时区的日期,因为 javascript Date 对象总是在本地时区。

您可以使用formattoString,如下所示,获取所需时区的日期:

var estTime = moment(new Date()).tz("America/New_York").format();

这是一个可运行的片段来充分展示:

moment.tz.add([
    'America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0'
]);

var estTime = moment(new Date()).tz("America/New_York").format();
console.log('StackOverflow Time:', new Date);
console.log('Eastern Time:', estTime)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone.js"></script>

于 2019-07-24T22:27:29.550 回答
1

也许您不在您怀疑的时区(或者至少您的网络不是)?

要测试功能,请确保您为每个测试使用已知值。以下是您的示例的更新和进一步测试的链接:

moment.tz.add([
  'America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0'
]);

let utc_time = moment().utc().format();
let estTime = moment(utc_time).tz("America/New_York").format();

console.log(utc_time);
console.log(estTime)

https://jsfiddle.net/dusthaines/8aqpbo2h/4/

于 2019-07-24T22:27:58.877 回答