我正在尝试复制错误。本质上,我在应用程序中具有以下代码。它在这里有效,即“午夜是早上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点。