Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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-在一个循环中,在6个月的纠正之后,添加1周到日期的对象会出现错误行为_Javascript_Date_Object_Increment - Fatal编程技术网

Javascript-在一个循环中,在6个月的纠正之后,添加1周到日期的对象会出现错误行为

Javascript-在一个循环中,在6个月的纠正之后,添加1周到日期的对象会出现错误行为,javascript,date,object,increment,Javascript,Date,Object,Increment,这个Javascript为一年中的每个星期天生成一个演讲者列表。 它从2015年5月3日开始,直到2015年11月1日都是正确的。 如果将一周添加到2015年11月1日,则生成2015年11月7日 而不是2015年11月8日(在Firefox、IE和Opera中)。我做错了什么? 输出如下所示: ... 2015年10月25日德尔塔(OK) 2015年11月1日阿尔法(正常) 2015年11月7日布拉沃(错误——见输出) 说话人列表生成器 "严格使用",; //方便的人造常数 var分钟=60

这个Javascript为一年中的每个星期天生成一个演讲者列表。 它从2015年5月3日开始,直到2015年11月1日都是正确的。 如果将一周添加到2015年11月1日,则生成2015年11月7日 而不是2015年11月8日(在Firefox、IE和Opera中)。我做错了什么? 输出如下所示: ... 2015年10月25日德尔塔(OK) 2015年11月1日阿尔法(正常) 2015年11月7日布拉沃(错误——见输出)


说话人列表生成器
"严格使用",;
//方便的人造常数
var分钟=60*1000;
var小时=分钟*60;
var日=小时*24;
var周=第7天;
var month_str=新数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
var=新数组();
扬声器[0]=新阵列();
扬声器=['Alpha'、'#FFFAAE']、['Bravo'、'#FFE3CD']、['Charlie'、'#AEFFB3']、['Delta'、'#D2FFFF']、['Echo'、'eded'];
//将第一个日期初始化为2015年5月3日
var日期=新日期(“2015年5月3日”);
var d=日期\对象获取日期();
var m=月[date_obj.getMonth()];
变量y=日期对象getFullYear();
var日=“”;
发言人名单
说话人
//每月
对于(var j=0;j<8;j++){
//每一位发言者
对于(变量i=0;i
当您跨越夏令时界限时,添加一周的方式将失败,因为您添加的时间正好是24小时,但有些天有23小时,有些天有25小时

您可以通过设置日期来避免这种情况。改变

date_obj.setTime(date_obj.getTime() + WEEK);


不要担心换行到下个月,
Date
对象将为您完成此操作。

这是因为夏时制将在2015年11月1日结束()

var date = moment('20151101', 'YYYYMMDD')

date.calendar()
"11/01/2015"

date.add(7, 'days')

date.calendar()
"11/08/2015"
可能最好使用像moment.js()这样的库来为您解决这个问题

var date = moment('20151101', 'YYYYMMDD')

date.calendar()
"11/01/2015"

date.add(7, 'days')

date.calendar()
"11/08/2015"

我无法复制所描述的行为-生成的不是2015年11月1日,而是“2015年10月31日”。@collapsar:您所在地区的DST日期与OP的不同。是的,谢谢,我刚刚注意到前一个日期是“2015年10月25日”。聪明的分析!
var date = moment('20151101', 'YYYYMMDD')

date.calendar()
"11/01/2015"

date.add(7, 'days')

date.calendar()
"11/08/2015"