假设我为圣诞节创建了一个全天活动。我希望这个活动是12月25日,无论你在哪个时区;2023-12-25";在服务器上。
当我在浏览器中执行new Date("2023-12-25")
时,它被解释为UTC日期,这不是我想要的,例如,如果我在纽约,我执行
new Date("2023-12-25") // Sun Dec 24 2023 19:00:00 GMT-0500 (Eastern Standard Time)
这意味着当我去格式化全天活动时,它将格式化为12月24日,这不是我想要的。
期望行为:
// If in New York
parseAllDayDate("2023-12-25") // Sun Dec 25 2023 00:00:00 GMT-0500 (Eastern Standard Time)
// If in London
parseAllDayDate("2023-12-25") // Mon Dec 25 2023 00:00:00 GMT+0000 (Greenwich Mean Time)
另外,请不要推荐dayjs或momentjs,我只想用JS Date来做这件事。
你可以试试这个
parseAllDayDate(dateString) {
let dateStringSplit = dateString.split('-');
let date = new Date();
date.setUTCDate(dateStringSplit[2]);
date.setUTCMonth(dateStringSplit[1]);
date.setUTCFullYear(dateStringSplit[0]);
return date;
}