0

我需要在给定开始日期和持续时间的情况下计算结束日期。开始日期是日期,持续时间是年数。所以结束日期将是:start date + duration - 1 day

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

我们怎样才能做到这一点?

4

4 回答 4

1

我总是创建 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;
};
于 2014-04-25T12:03:03.657 回答
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>
于 2012-07-18T04:11:49.373 回答
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);
于 2012-07-18T04:17:51.213 回答
0

Javacript Date 对象的一个​​经常被忽略的特性是,将单个日期属性(日期、月份、年份等)设置为超出其正常范围的值将自动调整其他日期属性,以便生成的日期有效。

例如,如果d是一个日期,那么您可以在 20 天后根据需要调整月份甚至年份,并将日期设为日期d.setDate (d.getDate () + 20)d

使用它,以下函数采用开始日期和持续时间对象并返回指定时间段之后的日期:

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}); 
于 2012-07-18T06:19:11.513 回答