以年为单位将日期添加到年份中

时间:2015-07-09 05:42:53

标签: javascript .net date extjs coffeescript

我希望将日期添加到日期,然后在一段时间内增加该日期。我有相同的时间跨度问题锁定但我有一个问题,试图正确使日期增量我知道getDate()+ 7是错误的,我不想使用插件。有任何想法吗?主要问题是,如果一年中的日期总是需要当年,那么我认为这是因为我如何实例化日期。如果我问的不清楚,我可以回答你的问题。

var last, packEndDate, packStartDate;

while (i < frequencyValue) {
  packStartDate = new Date();
  packEndDate = new Date();
  debugger;
  if (isWeek) {
    packStartDate.setDate(startDate.getDate() + (7 * i));
    packEndDate.setDate(packStartDate.getDate() + 7);
  } else {
    packStartDate.setDate(startDate.getDate() + (30 * i));
    packEndDate.setDate(packStartDate.getDate() + 30);
  }
  last = frequencyValue - 1;
  if (i === last) {
    packEndDate = endDate;
  }
}
i++;
}

3 个答案:

答案 0 :(得分:1)

您可以根据自1970年1月1日00:00:00 UTC以来的毫秒数创建新的Date对象。由于设置了分钟,小时,天,周的毫秒数,因此我们可以将固定数量添加到当前时间以便在将来获得时间。我们可以忘记自1970年以来经过的毫秒数内所固定的月份或年份。

我不确定您在循环中尝试做什么,但如果您想将特定日期增加一定天数,则可以执行以下操作:

var numberOfDaysToIncrement = 7;
var offset = numberOfDaysToIncrement * 24 * 60 * 60 * 1000;

var date = new Date();
var dateIncremented = new Date(date.getTime() + offset);

答案 1 :(得分:1)

使用extjs

在Ext.Date对象中使用add方法。参考:http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.Date-method-add

例如:Ext.Date.add(新日期(&#39; 10/29/2006&#39;),Ext.Date.DAY,5);

答案 2 :(得分:1)

修改了我的代码,看起来像这样。

                  packagesToAdd = []
                  packStartDate = new Date()
                  packEndDate = new Date()
                  while i < frequencyValue
                       if isWeek
                           toIncrementWeekly = 7 * i
                           offset = toIncrementWeekly * 24 * 60 * 60 * 1000
                           packStartDate = new Date(startDate.getTime() + offset)
                           packEndDate.setDate(packStartDate.getDate() + 7)
                       else
                           toIncrementMonthly = 30 * i
                           offset = toIncrementMonthly* 24 * 60 * 60 * 1000
                           packStartDate = new Date(startDate.getTime() + offset)
                           packEndDate.setDate(packStartDate.getDate() + 30)

                       last = frequencyValue - 1
                       if i == last
                              packEndDate = endDate
                       number = ('0' + i).slice(-2)
                       i++

工作惊人。谢谢dmlittle