【问题标题】:Add day(s) to a Date object [duplicate]将日期添加到日期对象 [重复]
【发布时间】:2011-10-21 06:08:14
【问题描述】:

可能重复:
How to add number of days to today's date?

我很困惑,我发现了这么多不同的方法,其中哪一个实际上是正确的?

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

【问题讨论】:

  • 你找到的大部分方法可能都是正确的
  • 你找到了哪些方法??

标签: javascript


【解决方案1】:
date.setTime( date.getTime() + days * 86400000 );

【讨论】:

  • 这是最适合我使用任意日期的方法。
  • +1 - setDate 不喜欢在日期中添加天数,setTime 非常喜欢以毫秒为单位添加天数
  • 这必须是公认的答案,因为它是唯一正确的答案。
  • 您还必须将其转换为新日期: var newDate = new Date(date.setTime( date.getTime() + days * 86400000 ));
  • 此逻辑不考虑夏令时。如果我们越过“前移一个小时”或“后移一个小时”的边界,结果将不会在日期边界上对齐。解决方案是通过添加 12 小时并将小时数归零来四舍五入到最近的日期边界:date.setTime(date.getTime() + 12 * 1000 * 60 * 60); date.setHours(0);(...如果你相信的话,我基本上是在今晚开始认真使用我的帐户并回答了 4 个问题只是为了让我获得足够的声誉来写这篇评论。这对我来说很重要,因为我刚刚遇到了这个问题!)
【解决方案2】:

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

注意:这个答案有问题(见 cmets)

var myDate = new Date();
myDate.setDate(myDate.getDate() + AddDaysHere);

应该是这样的

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

【讨论】:

  • 它会为您处理逻辑。切换到下个月、下一年等。这非常棒。
  • ^ +1 用于使用“rad”:D
  • 如果月份或年份不同则失败...
  • 这不行!!它只会更改当月的日期值...抱歉,这不是 rad。 “Nobody”的 getTime 方法有效。
  • 为什么这么多人接受这是正确的解决方案,而正如其他人所建议的那样,它只能在同一月份和同一年工作。
猜你喜欢
  • 2012-05-06
  • 2013-11-18
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多