Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 2017年3月26日的日期行为。Can';我一天也不会增加。为什么?_Javascript_Date_Datetime - Fatal编程技术网

Javascript 2017年3月26日的日期行为。Can';我一天也不会增加。为什么?

Javascript 2017年3月26日的日期行为。Can';我一天也不会增加。为什么?,javascript,date,datetime,Javascript,Date,Datetime,下面的片段是怎么回事?我试图构建一个字符串数组,作为从过去某一天开始的日期。例如,我可以在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).getD

下面的片段是怎么回事?我试图构建一个字符串数组,作为从过去某一天开始的日期。例如,我可以在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=新日期(新日期(currentDay2).setDate(新日期(currentDay2).getDate()+1)).toISOString().split(“T”)[0];
log('currentDay2:'+currentDay2);
log('nextDay2:'+nextDay2+'
因为您使用的是UTC格式的日期,并且希望忽略
本地时区更改,如夏令时,您应该
始终使用getUTCDate()和setUTCDate()。UTC没有夏令时

这是这本书的副本

它在我这边正常工作

因为您使用的是UTC格式的日期,并且希望忽略 本地时区更改,如夏令时,您应该 始终使用getUTCDate()和setUTCDate()。UTC没有夏令时

这是这本书的副本

它在我这边正常工作


评论的代码很长,因此决定回答:

const currentDay2=“2017-03-26”;
设[y,M,d]=currentDay2.拆分(/[-]/);
const nextDay2=新日期(y,(+M-1),+d).toISOString();

console.log(nextDay2);
发表评论的代码很长,因此决定回答:

const currentDay2=“2017-03-26”;
设[y,M,d]=currentDay2.拆分(/[-]/);
const nextDay2=新日期(y,(+M-1),+d).toISOString();

console.log(下一天2)
I get
nextDay2:2017-03-27我的猜测-夏令时。@jared您可以直接在堆栈溢出时运行堆栈片段,无需将代码粘贴到已经可以运行的JSFIDLE中。我会发现它非常轻量级。基本问题是YYYY-MM-DD格式的日期被解析为UTC,但您正在使用loc打印日期所有日期。因此,如果您在格林威治以西的时区,2017-03-26 UTC是本地的前一天。因此,当您添加1天并查看本地日期时,它仍然是26号。我得到
nextDay2:2017-03-27我的猜测-夏令时。@jared您可以在堆栈溢出时直接运行堆栈片段,无需将代码粘贴到已经运行的JSFIDLE中在这里,我想检查一下它的轻量级。基本问题是YYYY-MM-DD格式的日期被解析为UTC,但您使用的是本地日期打印日期。因此,如果您位于格林威治以西的时区,2017-03-26 UTC是本地日期的前一天。因此,当您添加1天并查看本地日期时,它仍然是26号。如果是d重复,那么你应该标记它,而不是发布一个答案来指出它。@VLAZ也许……但我更愿意关心这个问题。重复系统是用来解决问题的。如果某个地方有答案,那么让每个人都在一个共同的地方得到答案,而不是在不同的地方分散知识,这对每个人都更有利不同的页面。每个人都包括OP以及在搜索后偶然发现它的任何人。UTC不是一种格式,你可能指的是ISO 8601格式。如果它是重复的,那么你应该标记它,而不是发布一个答案指出它。@VLAZ也许……但我更愿意关心这个问题。重复的系统是用来解决这个问题的ve问题。如果某个地方有答案,对每个人来说,将答案放在一个共同的地方更有益,而不是将知识分散在不同的页面上。每个人都包括OP以及在搜索后偶然发现它的任何人。UTC不是一种格式,您可能指的是ISO 8601格式。