将日期添加到Date对象

iLe*_*ing 70 javascript

可能重复:
如何在今天的日期添加天数?

我很困惑,我找到了很多不同的方法,其中哪些方法实际上是正确的?

那么将日期添加到给定日期的正确方法是什么?

nob*_*ody 194

date.setTime( date.getTime() + days * 86400000 );
Run Code Online (Sandbox Code Playgroud)

  • 此逻辑不考虑夏令时.如果我们越过"向前移动一小时"或"向后移动一小时"边界,结果将不会在日期边界上对齐.解决方案是通过添加12小时并将小时调零来舍入到最近的日界:`date.setTime(date.getTime()+ 12*1000*60*60); date.setHours(0);`(......如果你能相信的话,我基本上刚刚开始正式使用我的账户,并且回答了4个问题,这样我就可以获得足够的声誉来写这篇评论.对我来说很重要很多,因为我刚遇到这个问题!) (44认同)
  • 这必须是公认的答案,因为这是唯一正确的答案. (6认同)
  • +1 - `setDate`不喜欢在日期中添加天数,`setTime`非常满意添加天数(以毫秒为单位) (5认同)
  • 这对我使用_arbitrary_日期最有效. (2认同)
  • 您还必须将其转换为新日期:var newDate = new Date(date.setTime(date.getTime()+ days*86400000)); (2认同)

use*_*502 122

注意:如果计算/添加当前日期的天数,使用它.

请注意:这个答案有问题(见评论)

var myDate = new Date();
myDate.setDate(myDate.getDate() + AddDaysHere);
Run Code Online (Sandbox Code Playgroud)

应该是这样的

var newDate = new Date(date.setTime( date.getTime() + days * 86400000 ));

  • 它会照顾你的逻辑.翻到下个月,一年等等.这很漂亮. (38认同)
  • ^ +使用"rad":D (30认同)
  • 这不行!! 它只会改变当月的日期值...对不起,它不是rad."Nobody"的getTime方法有效. (14认同)
  • 为什么这么多人接受这个作为正确的解决方案,正如其他人所建议的那样,它只在同一个月和一年内有效. (14认同)
  • 如果月份或年份不同,则失败... (11认同)
  • 这不起作用! (2认同)
  • 你知道,它是_does_ work.试试`var d = new Date(); d.setDate(32); console.log(d);`它显示下个月初的时间,正如您在我之前的评论中提到的文档所期望的那样. (2认同)