JavaScript 日期对象在设置为 UTC 午夜时显示不正确的日期

问题描述 投票:0回答:1

我遇到了 JavaScript Date 对象的问题,当我将其设置为 UTC 午夜时,它显示的日期不正确。这是我的代码:

function updateDates(startDate) {
    var utcStartDate = startDate + 'T00:00:00Z';
    var currentDate = new Date(utcStartDate);

    console.log(startDate);
    console.log(currentDate);

    // Additional code to update dates in the UI
}

这是控制台:

2024-02-26
list:4600 Sun Feb 25 2024 16:00:00 GMT-0800 (Pacific Standard Time)

我希望 currentDate 代表 UTC 时区午夜的 startDate 指定的日期。但是,当我记录 currentDate 时,它显示的日期比预期早一天,并且时间与午夜不匹配。

例如,如果 startDate 为“2024-02-26”,我预计 currentDate 为 2024 年 2 月 26 日,UTC 午夜。相反,我得到的是 2024 年 2 月 25 日 16:00:00 GMT-0800(太平洋标准时间)。

我尝试将时区偏移设置为 UTC(“Z”),但似乎无法解决问题。值得注意的是,无论环境的本地时区设置如何,都会出现这种差异。

如果您能深入了解 Date 对象为何如此行为以及如何确保在不同环境中获得一致的结果,我将不胜感激。谢谢!

javascript date datetime utc date-conversion
1个回答
0
投票

只需删除最后的“Z”即可:

function updateDates(startDate) {
    var utcStartDate = startDate + 'T00:00:00';
    var currentDate = new Date(utcStartDate)

    console.log(startDate);
    console.log(currentDate.toString());

    // Additional code to update dates in the UI
}

updateDates('2024-04-26');

© www.soinside.com 2019 - 2024. All rights reserved.