如何在moment.js中比较不同时区的日期

时间:2016-01-10 15:03:22

标签: javascript node.js timezone momentjs

我的服务器的日期格式位于UTC。我正在以UTC格式运行我的节点服务器。我想检查当前时间是否大于Indian timezone的上午8点,即+5.30并且应该发送邮件。如何使用moment.js

识别此信息

2 个答案:

答案 0 :(得分:5)

使用moment-timezone

if (moment.tz("08:00","HH:mm","Asia/Kolkata").isBefore()) {
  // ...
}

或者,由于印度不使用夏令时,实际上你不需要时刻时区。您只需要正确指定固定偏移量即可。其他使用DST或具有其他基本偏移转换的区域确实需要时刻 - 时区。

if (moment.parseZone("08:00+05:30","HH:mmZ").isBefore()) {
  // ...
}

使用上述两种方法时,请记住,isBefore默认为没有参数时的当前时间。您可以使用moment().isAfter(...)来编写它,相反,它会稍微缩短一点。

您是否与UTC或本地时间进行比较并不重要,因为内部时刻无论如何都会跟踪基于UTC的瞬时值。

答案 1 :(得分:1)

您可以使用isAfterMoment Timezone

// Get server date with moment, in the example serverTime = current UTC time
var serverDate = moment.utc();
// Get time in India with Moment Timezone
var indiaDate = moment.tz("Asia/Kolkata");
// Setting time to 8:00 AM (I'm supposing you need to compare with the current day)
indiaDate.hours(8).minutes(0).seconds(0);
if( serverDate.isAfter(indiaDate) ){
    // Server date is greater than 8 AM in India
    // Add here the code to send a mail
}