从字符串转换为ISODate Javascript时,如何防止时间戳发生更改



我有一个(yyyy-mm-dd(格式的日期,我想用时间戳和ISO格式获取开始和结束日期,我可以连接日期和时间戳,但我希望它是日期类型,而不是字符串,

let date = "2020-09-11";

预期结果应为,

startDate = 2020-09-11T00:00:00.000Z
endDate = 2020-09-11T23:59:59.000Z

开始日期正确,结束日期不正确,当我将其设置为setHours(23,59,59)时,它给出了不同的时间戳18:29:59.000Z

let startDate = new Date(date);
console.log(startDate);
// output: 2020-09-11T00:00:00.000Z
let endDate = new Date(new Date(date).setHours(23,59,59)); 
console.log(endDate);
// output: 2020-09-11T18:29:59.000Z

我在nodejs中看到了这个将字符串转换为ISO日期时间的问题,但这对我没有帮助,我不想使用moment

我转换日期是不是做错了?我正在使用nodejs。

您应该使用setUTCHours()

setUTCHours()方法根据通用时间设置指定日期的小时

let date = new Date()
let startDate = new Date(new Date(date).setUTCHours(0,0,0));
let endDate = new Date(new Date(date).setUTCHours(23,59,59));
console.log(startDate);
console.log(endDate);

您可以添加后缀而不转换为本地日期。

let date = "2020-09-11",
startDate = date + 'T00:00:00.000Z',
endDate = date + 'T23:59:59.000Z';
console.log(startDate);
console.log(endDate);

最新更新