2012-07-18 131 views
0

我有一个要求计算结束日期给定的开始日期和持续时间。开始日期是日期和持续时间是年数。所以结束日期将是:start date + duration - 1 day从jquery开始日期计算结束日期

例如,开始日期为15/06/2012,持续时间为12个月,则结束日期为14/06/2013

我们该如何做到这一点?

+0

...喂...并没有我见12“月”? – 2012-07-18 06:30:46

+0

可能重复[如何添加天数到今天的日期?](http://stackoverflow.com/questions/3818193/how-to-add-number-of-days-to-todays-date) – 2012-07-18 12:58:48

回答

0

你不能在jQuery的做到这一点,你必须做的Javascript像这样:

<script type="text/javascript"> 

    // Todays date in milliseconds 
    var today=new Date().getTime(); 

    // Add milliseconds in a year (minus one day) to todays date 
    var yearLater=new Date(today + ((31557600 - 86400) * 1000)); 
    document.write(yearLater); 

</script> 
+0

那里赢得不是日期值中的任何时间分量..它的格式为dd/mm/yyyy – 2012-07-18 05:45:23

0

你并不需要jQuery来添加日期。 Javascript足够光荣,可以做到这一点。

var myDate=new Date(year,month,date,0,0,0).getTime(); 
var day_milli= 1000*60*60*24; 
var newDate=new Date(myDate + day_milli * (duration -1)); 
alert(newDate); 
+0

日期值中不会有任何时间分量..它的格式为dd/mm/yyyy。 .even输出我需要以dd/mm/yyyy格式。 – 2012-07-18 05:46:13

+0

这就是为什么时间分量设置为“零”。你也应该参考JavaScript日期函数也http://blog.stevenlevithan.com/archives/date-time-format。您始终可以从日期对象中获取所需格式的日期。 http://blog.stevenlevithan.com/archives/date-time-format你真的是懒惰 – Imdad 2012-07-18 09:15:53

+0

我试过你说的方式..我得到newDate as Sat Aug 18 2012 00:00:00 GMT + 0530(India Standard Time )..但我无法将其格式化为dd-mmm-yyyy(2012年08月18日) – 2012-07-18 13:39:02

0

一个的Javacript Date对象往往被忽视的特点是,设置单独的日期属性(日,月,年等),以值超过正常范围将自动 调整其他日期属性,这样所产生的日期有效。

例如,如果d是一个日期,那么你可以做d.setDate (d.getDate() + 20)d将在20天后调整几个月,甚至几年appropriatley需要具有日期。

利用这一点,下面的函数接受一个开始日期和持续时间对象,并在指定的时间段后返回日期:

function dateAfter (date, duration) { 
    if (typeof duration === 'number') // numeric parameter is number of days 
    duration = {date:duration}; 

    duration.year && date.setYear (date.getYear() + duration.year); 
    duration.month && date.setMonth (date.getMonth() + duration.month); 
    duration.date && date.setDate (date.getDate() + duration.date); 
    return date; 
} 

// call as follows : 

var date = dateAfter (new Date (2012, 5, 15), {year: 1}); // adds one year 
console.log (date); 

date = dateAfter (date, {month:5, date: 4}); // adds 5 months and 4 days 
console.log (date); 

date = dateAfter (date, 7 * 4); // adds 4 weeks 
console.log (date); 

// to return the end date asked by the op, use 
var date = dateAfter (new Date (2012, 5, 15), {year: 1, date: -1}); 
0

我总是创造7层的功能,用最新的JS工作:addSeconds, addMinutes,addHours,addDays,addWeeks,addMonths,addYears。

这里你可以看到一个例子:http://jsfiddle.net/tiagoajacobi/YHA8x/

如何使用:

var now = new Date(); 
console.log(now.addWeeks(3)); 
console.log(now.addYears(1)); 
console.log(now.addDays(-20)); 

这是函数:

Date.prototype.addSeconds = function(seconds) { 
    this.setSeconds(this.getSeconds() + seconds); 
    return this; 
}; 

Date.prototype.addMinutes = function(minutes) { 
    this.setMinutes(this.getMinutes() + minutes); 
    return this; 
}; 

Date.prototype.addHours = function(hours) { 
    this.setHours(this.getHours() + hours); 
    return this; 
}; 

Date.prototype.addDays = function(days) { 
    this.setDate(this.getDate() + days); 
    return this; 
}; 

Date.prototype.addWeeks = function(weeks) { 
    this.addDays(weeks*7); 
    return this; 
}; 

Date.prototype.addMonths = function (months) { 
    var dt = this.getDate(); 

    this.setMonth(this.getMonth() + months); 
    var currDt = this.getDate(); 

    if (dt !== currDt) { 
     this.addDays(-currDt); 
    } 

    return this; 
}; 

Date.prototype.addYears = function(years) { 
    var dt = this.getDate(); 

    this.setFullYear(this.getFullYear() + years); 

    var currDt = this.getDate(); 

    if (dt !== currDt) { 
     this.addDays(-currDt); 
    } 

    return this; 
}; 
多年
相关问题