2012-07-18 2 views
0

У меня есть требование рассчитать дату окончания и дату начала. Дата начала - дата и продолжительность - это количество лет. Таким образом, дата окончания будет: start date + duration - 1 day.расчет даты окончания с даты начала в jquery

См., Например, дата начала - 15/06/2012, а продолжительность - 12 месяцев, а дата окончания - 14/06/2013.

Как мы можем достичь этого?

+0

в годы ... привет ... и я см. 12 «МЕСЯЦЫ» ??? –

+0

Возможный дубликат [Как добавить количество дней до сегодняшней даты?] (Http://stackoverflow.com/questions/3818193/how-to-add-number-of-days-to-todays-date) –

ответ

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

там выиграл 't будет какой-либо компонент времени в значении даты .. он находится в формате dd/mm/yyyy –

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. . Мне нужен один вывод в формате dd/mm/yyyy. –

+0

Вот почему компонент времени установлен на 'zero'. И вы также должны ссылаться на функции даты javascript также http://blog.stevenlevithan.com/archives/date-time-format. Вы всегда можете получить дату в желаемом формате из объекта даты. http://blog.stevenlevithan.com/archives/date-time-format ВАМ ДЕЙСТВИТЕЛЬНО ЛАЗИ – Imdad

+0

Я пробовал, как вы сказали. Я получаю newDate как сб. 18 августа 2012 00:00:00 GMT + 0530 (Индия Стандартное время) .. но я не могу отформатировать его как dd-mmm-yyyy (18 августа 2012 г.) –

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; 
}; 
Смежные вопросы