首页 > 解决方案 > 2017-03-26 上的 Javascript 奇怪的日期行为。不能增加一天。为什么?

问题描述

下面的代码片段是怎么回事?我正在尝试将字符串数组构建为从过去一天开始的日期。例如,我能够在整个 2019 年做到这一点。但是当我以2017-01-01某种方式开始时,我不能增加过去的日期2017-03-26

我可以2017-03-27毫无问题2017-03-28地增加。为什么会这样?

const currentDay = "2017-01-01";
const nextDay = new Date(new Date(currentDay).setDate(new Date(currentDay).getDate() + 1)).toISOString().split("T")[0];

console.log('currentDay: ' + currentDay);
console.log('nextDay: ' + nextDay);

const currentDay2 = "2017-03-26";
const nextDay2 = new Date(new Date(currentDay2).setDate(new Date(currentDay2).getDate() + 1)).toISOString().split("T")[0];

console.log('currentDay2: ' + currentDay2);
console.log('nextDay2: ' + nextDay2 + '<------ DOES NOT INCREMENT');

const currentDay3 = "2017-03-27";
const nextDay3 = new Date(new Date(currentDay3).setDate(new Date(currentDay3).getDate() + 1)).toISOString().split("T")[0];

console.log('currentDay3: ' + currentDay3);
console.log('nextDay3: ' + nextDay3);

我认为这不是我的环境的问题,但无论如何,这就是我得到的:

在此处输入图像描述

你们有什么不一样的吗?

标签: javascriptdatedatetime

解决方案


发表评论的代码很长,所以决定做一个答案:

const currentDay2 = "2017-03-26";
let [y,M,d] = currentDay2.split(/[-]/);
const nextDay2 = new Date(y, (+M - 1), ++d).toISOString();
console.log(nextDay2);

看起来Date.Parse() 解析不正确


推荐阅读