Javascript 以年为单位向日期添加天数

Javascript 以年为单位向日期添加天数,javascript,.net,date,extjs,coffeescript,Javascript,.net,Date,Extjs,Coffeescript,我想给一个日期加上几天,然后在一段时间内增加这个日期。我有相同的时间跨度问题锁定,但我有一个问题,试图使日期增量正确我知道getDate()+7是错误的,我不想使用插件。有什么想法吗?主要的问题是,如果一年中的日期超过一圈,那么它将始终采用当前年份,我猜这是因为我是如何实例化日期的。如果我问的不清楚,我可以回答你的问题 var last, packEndDate, packStartDate; while (i < frequencyValue) { packStartDate =

我想给一个日期加上几天,然后在一段时间内增加这个日期。我有相同的时间跨度问题锁定,但我有一个问题,试图使日期增量正确我知道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++;
}
var last、packEndDate、packStartDate;
而(i<频率值){
packStartDate=新日期();
packEndDate=新日期();
调试器;
如果(每周){
packStartDate.setDate(startDate.getDate()+(7*i));
packEndDate.setDate(packStartDate.getDate()+7);
}否则{
packStartDate.setDate(startDate.getDate()+(30*i));
packEndDate.setDate(packStartDate.getDate()+30);
}
last=频率值-1;
如果(i==最后一个){
packEndDate=结束日期;
}
}
i++;
}

您可以根据1970年1月1日00:00:00 UTC以来的毫秒数创建新的日期对象。由于设置了一分钟、一小时、一天、一周的毫秒数,因此我们可以向当前时间添加一个固定量,以获得未来的时间。我们可以忘记一个月或一年中的哪一天,因为它是自1970年以来固有的毫秒数

我不确定您在循环中要做什么,但如果您想将某一天增加一定的天数,可以执行以下操作:

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

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

在Ext.Date对象中使用add方法。参考:


例如:Ext.Date.add(新日期('10/29/2006'),Ext.Date.DAY,5)

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

                  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++
packagesToAdd=[]
packStartDate=新日期()
packEndDate=新日期()
而我<频率值
如果是星期
toIncrementWeekly=7*i
偏移量=至增量*24*60*60*1000
packStartDate=新日期(startDate.getTime()+偏移量)
packEndDate.setDate(packStartDate.getDate()+7)
其他的
toIncrementMonthly=30*i
偏移量=每月增加*24*60*60*1000
packStartDate=新日期(startDate.getTime()+偏移量)
packEndDate.setDate(packStartDate.getDate()+30)
last=频率值-1
如果我=最后一个
packEndDate=endDate
数字=('0'+i).slice(-2)
我++

工作很出色。谢谢,dmlittle

效果很好。最后使用它非常简单。适应它需要一些时间。很好地使用api文档。这很容易,但同时也很痛苦。