时区和夏令时

时间:2018-12-04 18:12:18

标签: node.js timezone momentjs dst

我正在使用以下代码获取特定时区的GMT差异:

var TimeZone = 'America/New_York';
console.log('GMT Offset  ' + moment().tz(TimeZone).utcOffset().toString());

此代码还会考虑DST吗?

1 个答案:

答案 0 :(得分:3)

是的,moment.tz()知道夏令时。 docs对此是明确的:

  

moment.tz构造函数采用与矩构造函数相同的所有参数,但将最后一个参数用作time zone identifier
  ...
  该构造函数具有DST意识,并且在解析时将使用正确的偏移量。

var TimeZone = 'America/New_York';
console.log('Winter GMT Offset  ' + moment.tz('2018-12-04', TimeZone).utcOffset()/60);
console.log('Summer GMT Offset  ' + moment.tz('2018-06-04', TimeZone).utcOffset()/60);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>