我想从一个yyyy-mm-dd JavaScript Date对象中获得一个JavaScript格式的日期。
new Date('Aug 5 2022').toISOString().split('T')[0]从上线看,我期待2022-08-05,但得到2022-08-04
如何解决这个问题?
发布于 2022-08-09 09:33:59
发生此问题是因为您试图将toISOString转换为UTC --自动转换为UTC,我确信您不在UTC区域。因此,要修复此使用:
new Date('Aug 5 2022 GMT+00').toISOString().split('T')[0]因此,将其转换为UTC,然后转换为toISOString()
发布于 2022-08-09 09:36:47
你的约会被转换为世界协调时。解决这一问题的一种方法是将UTC添加到参数字符串中。
new Date('Aug 5 2022 UTC').toISOString().split('T')[0]Date.prototype.toISOString() toISOString()方法返回一个简化扩展ISO格式(ISO8601)的字符串,该字符串总是长为24个或27个字符(分别为YYYY-mm-DDTHH:mm:ss.sssZ或±YYYYYY DDTHH:mm:ss.sssZ)。时区始终为零UTC偏移量,由后缀Z - Date.prototype.toISOString()表示。
发布于 2022-08-09 10:00:40
下面是从本机yyyy-mm-dd Date对象获取您询问的JavaScript字符串格式的两种方法:
const date = new Date();
const utcOffsetMs = date.getTimezoneOffset() * 60 * 1e3 * -1;
const offsetDate = new Date(date.getTime() + utcOffsetMs);
const dateStr = offsetDate.toISOString().slice(0, 10);
console.log(dateStr);
function getDateString (date) {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const dayOfMonth = date.getDate();
return `${year}-${String(month).padStart(2, '0')}-${String(dayOfMonth).padStart(2, '0')}`;
}
const date = new Date();
const dateStr = getDateString(date);
console.log(dateStr);
https://stackoverflow.com/questions/73289495
复制相似问题