Node.js使用Luxon创建指定时区DateTime出现偏移异常问题
问题原因
你的操作存在参数配置疏漏,核心是DateTime.fromISO的zone参数默认行为不符合你的使用预期:
- 输入的ISO字符串
2021-10-28T16:00:00不带时区标识,Luxon默认会按照运行环境的本地时区解析该时间,再转换到你指定的Europe/London时区 - 如果你希望输入的时间本身就属于
Europe/London时区,不需要先按服务器本地时区解析再转换,需要额外添加setZone: true参数。
修正后代码
const { DateTime } = require("luxon"); let luxDate = DateTime.fromISO("2021-10-28T16:00:00", {zone: "Europe/London", setZone: true}); console.log(luxDate.toString())
运行后输出为2021-10-28T16:00:00.000+01:00,与你的预期一致。
额外排查点
如果添加参数后仍然出现异常偏移,可以执行以下代码确认Azure服务器的实际时区配置是否为预期的UTC:
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)
内容的提问来源于stack exchange,提问作者Rich11111
相关产品推荐
相关产品推荐

