Moment.js 夏令时转换

Moment.js DST conversion

我从数据库中收到关于圣保罗(巴西)一家工厂的字符串:

“2018-10-30T14:10:40.423-03:00”。

我正在尝试使用命令创建矩对象

var dateFromDB = "2018-10-30T14:10:40.423-03:00";
var momentObj = moment.tz(dateFromDB, "America/Sao_Paulo")

但格式不正确

console.log(momentObj.format('L HH:mm:ss')) // I expect "10/30/2018 14:10:40"

但结果是“10/30/2018 15:10:40”。

怎么了?

这与巴西 2018 年夏令时日期的变化有关,反映在 tzdb 2018c 中。

对于 Moment-Timezone,这是 0.5.15 或更高版本。升级到最新版本,应该会有正确的结果。

永远记住 - 时区由世界各国政府决定。他们可以而且确实会改变。技术可以反映这些决定,但前提是您掌握更新。