Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么JavaScript错误地解析数据?_Javascript - Fatal编程技术网

为什么JavaScript错误地解析数据?

为什么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

有两件奇怪的事:

第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年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