{在午夜至凌晨1点之间的时间}做。{before {当天晚些时间}即将到来FALSE(似乎)-使用moment-timezone

时间:2020-04-20 16:23:12

标签: node.js dst moment-timezone

我正在尝试复制错误。本质上,我在应用程序中具有以下代码。它在这里有效,即“午夜是早上7点之前”是真的。

// The server is running in UTC

const moment = require("moment-timezone");
moment.tz.setDefault("Europe/London");

const now = moment("2020-04-20 00:00"); // In the app, 'now' is the current moment()

const testTime = "07:00", testTimeMoment = moment(testTime, "HH:mm");

console.log(`now: ${now}\nUTC: ${now.utc()}\ntestTime: ${testTimeMoment}`);
console.log(`'now' is before 'testTime' ? ${now.isBefore(testTimeMoment)}`);

console.log是:

现在:2020年4月20日星期一00:00:00 GMT + 0100

UTC:2020年4月19日,星期日,格林尼治标准时间+0000

testTime:2020年4月20日星期一7:00:00 GMT + 0100

'now'在'testTime'之前?是

但是在我的应用程序中,该测试似乎失败了,直到凌晨1点及以后,然后比较才成为真。

我在英国的服务器在UTC / GMT上运行。但是我们是夏令时,所以我默认为伦敦时间。

有什么想法吗?

更新:比较运算符实际上行为正确。之所以没有提供预期的结果,是因为在午夜至凌晨1点之间,前一天创建了testTime时刻。我想要的是英国夏令时间上午7点,因为在代码顶部但前一天设置了默认时区。凌晨1点之后,该时刻已正确创建为今天上午7点。

0 个答案:

没有答案