2011-05-07 53 views
0

特此通过添加季月我是以下输入:如何使用Java脚本

月由分开:4个月

将与年份和月份日期:07- 05-2011。

现在我需要通过使用java脚本或jQuery添加4个月。如何才能做到这一点?

例如:

我有日期为:2011年1月1日和持续时间是4

我的输出应为:

01-12 -2010

01-04-2011

2011年1月8日

01-12-2011

例如,如果它是:

我有日期为:01-06-2011并且持续时间是4

我的输出应该是:

01-06-2011

2011年1月10日

01-02-2012

01-06-2012

预先感谢

回答

3

这里有:

var initialDate = new Date(2011, 5, 1); //Your example number two. January is 0 
for(var i=0; i<4; i++){ 
    var newMonth = initialDate.getMonth() + i; 
    var newYear = initialDate.getYear(); 
    if(newMonth >= 12){ 
    newMonth = newMonth % 12; 
    newYear ++; 
    } 
    var newDate = new Date(newYear, newMonth, 1); 
    alert(newDate); 
} 

希望这有助于。干杯

+0

谢谢埃德加...它帮助我很多... :-)通过使用此代码,我得到了我所需要的..许多谢谢朋友 – Fero 2011-05-09 05:53:22

1

甲日期对象具有它接受一个一个的getMonth方法和setMonth方法整数(月数)。

所以,也许一个功能:

function GetNextPeriod(basisDate){ 
    // Copy the date into a new object 
    var basisDate = new Date(basisDate); 
    // get the next month/year 
    var month = basisDate.getMonth() +4; 
    var year = basisDate.getFullYear(); 
    if (month >= 12){ 
    month -= 12; 
    year++; 
    } 
    // set on object 
    basisDate.setMonth(month); 
    basisDate.setFullYear(year); 
    // return 
    return basisDate; 
} 

var period1 = GetNextPeriod(inputDate); 
var period2 = GetNextPeriod(period1); 
var period3 = GetNextPeriod(period2); 
+0

您还需要考虑到几年的重叠,setMonth需要0-11,而不是几个月来添加。 – 2011-05-07 14:42:22

+0

好点。 @OP,在这个上运行一些测试会让你知道 – 2011-05-07 14:46:13

+0

看起来不错OP .... – 2011-05-07 14:59:18

0

没有什么内置到原有的Date对象做任何日期计算这样的。你可以选择编写自己的函数来在4个月内增加毫秒数,或者你可以检查出DateJS

0

这里是一个函数,需要一个字符串像01-06-2011,把它变成一个日期变量,增加了四个月,返回结果为同一DD-MM-yyyy格式的字符串:

function addFourMonths(dateString) { 
    var dateParts = dateString.split('-'); 
    var newDate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); 
    newDate.setMonth(newDate.getMonth() + 4); 
    return newDate.getDate() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getFullYear(); 
} 

要使用:

var myDate = addFourMonths('01-12-2011'); 
alert('The date is ' + myDate); 

结果(live demo):

'The date is 1-4-2012.' 

注意,使用setMonth(newmonth)如果newmonth当打之年自动递增大于12,所以没有必要测试,由于一些这里介绍做其他的答案。

MDC docs for setMonth

“如果指定的参数是在预期范围之外,setMonth尝试更新的Date对象的日期信息。因此例如,如果使用15 monthValue,年份将增加1(年+ 1),3月份将用于月份。“