为什么JavaScript错误地解析数据?
有两件奇怪的事: 第30天而不是31天? 它将13设置为时间而不是00为什么JavaScript错误地解析数据?,javascript,Javascript,有两件奇怪的事: 第30天而不是31天? 它将13设置为时间而不是00 new Date('Dec 31, 2019').toISOString() // '2019-12-30T13:00:00.000Z' 基本上,我正在尝试将原始数据格式转换为YYYY-MM-DD。新日期“2019年12月31日”-此日期将以本地时间格式显示 e、 g: 但是,新日期为“2019年12月31日”。toISOString-该日期将显示如下 2019-12-30T13:00:00.000Z。这意味着2019年1
new Date('Dec 31, 2019').toISOString()
// '2019-12-30T13:00:00.000Z'
基本上,我正在尝试将原始数据格式转换为YYYY-MM-DD。新日期“2019年12月31日”-此日期将以本地时间格式显示
e、 g:
但是,新日期为“2019年12月31日”。toISOString-该日期将显示如下
2019-12-30T13:00:00.000Z。这意味着2019年12月31日减去你所在时区的11小时
此外,为了避免出现奇怪的行为,请尝试明确设置年、月和日以避免出现奇怪的行为
您应按以下格式分析日期:
// yyyy-mm-dd format
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
let yourDate = new Date(parts[0], parts[1]-1, parts[2]); // Be careful: months are 0-based
您似乎处于+11时区,这显示了UTC时间,因此它是正确的,只是没有时间偏移。您忘记考虑时区。这仍然会在本地时区中创建一个日期,该日期在转换为时将以同样的方式不正确UTC@downvoter否决投票的理由是什么?
// yyyy-mm-dd format
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
let yourDate = new Date(parts[0], parts[1]-1, parts[2]); // Be careful: months are 0-based