转换为 UTC 在 Javascript 中给出 NaN 错误
Converting to UTC is giving NaN error in Javascript
我有下面的代码,当我试图将它转换成 Date.UTC
格式时出现 NaN
错误。
let sDate = "2019, 10, 19";
let min = Date.UTC(sDate);
而下面的代码给出了正确的结果
let min = Date.UTC(2019, 10, 19);
但根据我的需要,sDate
应该作为参数传递,因为它可能会有所不同。如何纠正?
如果你引用docs,Date.UTC
不会将日期字符串作为参数。它需要单独的部分。
Date.UTC(year[, month[, day[, hour[, minute[, second[, millisecond]]]]]])
因此,当您传递 Date.UTC('2019, 10, 19')
时,您只是传递了年份的值,而不是其他值。年值亦非数。因此 NaN。
如果您希望使用日期字符串创建 UTC 日期,则必须拆分值。
日期 参数 不是字符串:
let sDate = "2019, 10, 19";
let min = Date.UTC(...sDate.split(', '));
console.log(new Date(min));
您可以使用String.split(解构)将已知日期字符串格式转换为年、月、日。传递给 Date.UTC 函数时,您必须从月份值中减去 1,因为它接受从 0 到 11(一月到十二月)的月份值。
如果您想进行更复杂的日期解析,我强烈建议您使用 Moment.js 这样的库。这是经过充分测试的,并且具有非常灵活的 API.
const sDate = "2019, 10, 19";
const [year, month, day] = sDate.split(",");
console.log("Date components:", {year, month, day});
// Date constructor takes a month from 0: January to 11: December
const utcDate = Date.UTC(year, month - 1, day);
console.log("Date (ISO):", new Date(utcDate).toISOString());
console.log("Date (toLocaleString):", new Date(utcDate).toLocaleString("en", { timeZone: "UTC"}));
Date.UTC() 方法接受类似于 Date 构造函数的参数,但将它们视为 UTC
Date.UTC(year[, month[, day[, hour[, minute[, second[, millisecond]]]]]])
不能直接使用字符串
getData=(d)=>{
return [d.getFullYear(),d.getMonth(),d.getDate(), d.getHours(),d.getMinutes()];
};
let splited = getData(new Date('2019, 10, 19'))
console.log(new Date(Date.UTC(...splited)));
我有下面的代码,当我试图将它转换成 Date.UTC
格式时出现 NaN
错误。
let sDate = "2019, 10, 19";
let min = Date.UTC(sDate);
而下面的代码给出了正确的结果
let min = Date.UTC(2019, 10, 19);
但根据我的需要,sDate
应该作为参数传递,因为它可能会有所不同。如何纠正?
如果你引用docs,Date.UTC
不会将日期字符串作为参数。它需要单独的部分。
Date.UTC(year[, month[, day[, hour[, minute[, second[, millisecond]]]]]])
因此,当您传递 Date.UTC('2019, 10, 19')
时,您只是传递了年份的值,而不是其他值。年值亦非数。因此 NaN。
如果您希望使用日期字符串创建 UTC 日期,则必须拆分值。
日期 参数 不是字符串:
let sDate = "2019, 10, 19";
let min = Date.UTC(...sDate.split(', '));
console.log(new Date(min));
您可以使用String.split(解构)将已知日期字符串格式转换为年、月、日。传递给 Date.UTC 函数时,您必须从月份值中减去 1,因为它接受从 0 到 11(一月到十二月)的月份值。
如果您想进行更复杂的日期解析,我强烈建议您使用 Moment.js 这样的库。这是经过充分测试的,并且具有非常灵活的 API.
const sDate = "2019, 10, 19";
const [year, month, day] = sDate.split(",");
console.log("Date components:", {year, month, day});
// Date constructor takes a month from 0: January to 11: December
const utcDate = Date.UTC(year, month - 1, day);
console.log("Date (ISO):", new Date(utcDate).toISOString());
console.log("Date (toLocaleString):", new Date(utcDate).toLocaleString("en", { timeZone: "UTC"}));
Date.UTC() 方法接受类似于 Date 构造函数的参数,但将它们视为 UTC
Date.UTC(year[, month[, day[, hour[, minute[, second[, millisecond]]]]]])
不能直接使用字符串
getData=(d)=>{
return [d.getFullYear(),d.getMonth(),d.getDate(), d.getHours(),d.getMinutes()];
};
let splited = getData(new Date('2019, 10, 19'))
console.log(new Date(Date.UTC(...splited)));