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日期对象添加日期不起作用_Javascript_Date - Fatal编程技术网

移动到下个月时,向javascript日期对象添加日期不起作用

移动到下个月时,向javascript日期对象添加日期不起作用,javascript,date,Javascript,Date,我在使用javascript日期对象时遇到了一个问题,特别是在尝试向日期对象添加日期时。我正在编写的函数以开始日期为准,并创建未来七天的列表,用作“周视图”日历应用程序的标题。当它确定的周日期在同一个月内时,我的函数按预期工作。到下个月,事情就变得不稳定了 我的日期列表生成函数(注意:.toHdr()方法是我创建的自定义日期方法,与.clone()一样): 但是,当通过类似“10月31日星期日”的日期时,返回的列表如下所示: ["Sunday - Oct. 31, 2010", "Monday

我在使用javascript日期对象时遇到了一个问题,特别是在尝试向日期对象添加日期时。我正在编写的函数以开始日期为准,并创建未来七天的列表,用作“周视图”日历应用程序的标题。当它确定的周日期在同一个月内时,我的函数按预期工作。到下个月,事情就变得不稳定了

我的日期列表生成函数(注意:.toHdr()方法是我创建的自定义日期方法,与.clone()一样):

但是,当通过类似“10月31日星期日”的日期时,返回的列表如下所示:

["Sunday - Oct. 31, 2010", "Monday - Nov. 1, 2010", "Friday - Dec. 3, 2010", "Monday - Jan. 3, 2011", "Friday - Feb. 4, 2011", "Tuesday - Mar. 8, 2011", "Wednesday - Apr. 6, 2011"]
很明显,每次向日期对象添加一天会在移动到下一个月时出现问题,我只是不确定如何避开它。有什么想法吗

编辑:

})


在循环中,您使用提供的
date
作为每个setDate()的参考点:


date
是10月31日的最后一天,并且
i
是1时,这将
\u d
月日设置为第32天,即11月1日。在下一次迭代中,您将
\u d
的月份日期设置为(31+2),但请记住
\u d
现在是11月-因此日期向前移动到12月3日。在随后的迭代中,您的步长每月增加一天,因此您的结果是。你能改打电话给
\u d
上的getter吗?在这种情况下,您将设置为32天,然后设置为2天,3天,以此类推,而不是将每月的日期设置为32天、33天、34天等等。

旧主题,但如果有人访问此页面,此小功能可能会很有用

要包含月份管理,可以使用原始日期的“getTime()”函数创建新日期,并添加要添加的天数的相应值

function addDays(date,addDays) {
    return new Date(date.getTime() + (addDays*24*60*60*1000));
}

问候

啊,观察力很强。我现在只是修改传入的date对象,每次都添加1。这似乎奏效了。谢谢你的意见!非常感谢。这里有点新,如果我想发布解决方案,我应该编辑op吗?注释似乎没有格式。@Greg-为了清晰起见,我认为最好将解决方案作为答案发布(顺便说一句,回答您自己的问题也可以)。但是,通过添加/更正来改进问题也很好,就像您在本例中所做的那样。一般来说,我们不赞成改变问题的方式,使到目前为止发布的答案不再有意义——如果需要,最好再发布另一个问题。谢谢,马特,我来看看。
["Sunday - Oct. 31, 2010", "Monday - Nov. 1, 2010", "Friday - Dec. 3, 2010", "Monday - Jan. 3, 2011", "Friday - Feb. 4, 2011", "Tuesday - Mar. 8, 2011", "Wednesday - Apr. 6, 2011"]
Date.prototype.toHdr = function(){
    /*
     * Convenience method for creating a formatted string that will be used in
     * all headers with a specific date.
     */
    var dayMapping = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
    var monthMapping = ['Jan.','Feb.','Mar.','Apr.','May','June','July','Aug.','Sept.','Oct.','Nov.','Dec.'];
    return dayMapping[this.getDay()] + ' - ' + monthMapping[this.getMonth()] + ' ' + this.getDate() + ', ' + this.getFullYear();
Date.prototype.clone = function(){
    /*
     * Clone a date object, useful for creating a copy of a date, so the
     * original isn't modified.
     */
    return new Date(this.getTime());
}
_d.setDate(date.getDate() + i);
function addDays(date,addDays) {
    return new Date(date.getTime() + (addDays*24*60*60*1000));
}