日期:来自 ISO 8601 日期实例的 getDate() 错误值

Date: getDate() wrong value from ISO 8601 date instance

本文关键字:日期 错误 getDate 实例 来自 ISO 8601      更新时间:2023-09-26

我有一个数据库,它通过 AJAX 向客户端提供日期,其格式为 ISO 8601 ,解析日期实例的ISO 8614格式应该很容易,但由于某种原因date.getDate()在提供的一天提前一天返回,我不知道为什么会发生这种情况,所以现在我只是制作调用 date 方法的函数将值提高 1。

代码很简单:

function getFullDate(ISO){
    // ISO = 
    var date = new Date(ISO);
    return [
        date.getFullYear(),
        date.getMonth() < 10 ? "0" + date.getMonth() : date.getMonth(),
        date.getDate() < 10 ? "0" + (date.getDate() + 1) : (date.getDate() + 1) //Get date returns 1 day early so raise by 1
    ].join("-");
}
console.log(getFullDate("2016-07-19T00:00:00.000Z")); // 2016-07-19

代码没有问题,我只想知道为什么会发生这种情况,现在我只看到它只发生在ISO 8601格式下

您有一个采用 UTC 时间的日期,但使用的方法将以您的计算机设置为的任何时区显示。

查看日期文档并使用以getUTC...开头的方法,例如getUTCFullYear()