Вычитание дней / месяцев / лет из объекта Date

var inputDate     = '20/4/2010'.split('/');
var dateFormatted = new Date(parseInt(inputDate[2]), parseInt(inputDate[1]), parseInt(inputDate[0]));

var expiryDate = (dateFormatted.getDate() - 1) + '/' + dateFormatted.getMonth() + '/' + (dateFormatted.getFullYear() + year);

Это код Javascript, который я использую для определения даты истечения срока действия с учетом введенной пользователем даты. В настоящее время срок действия составляет исходная дата минус один день и исходный год минус X .

Проблемы с этим кодом, во-первых, он не учитывает недопустимые даты. Например, если дата, указанная пользователем, - «1/10/2010», срок действия будет «0/10/2013» (при условии, что срок годности составляет +3 года).

Я мог бы сделать что-то вроде:

var inputDate = '20/4/2010'.split('/');
var day       = parseInt(inputDate[0]);
var month     = parseInt(inputDate[1]);
var year      = parseInt(inputDate[2]);

if (day < 1)
{
    if (month == ...)
    {
        day   = 31
        month = month - 1;
    }
    else
    {
        day   = 30
        month = month - 1;
    }
}

var dateFormatted = new Date(parseInt(inputDate[2]), parseInt(inputDate[1]), parseInt(inputDate[0]));
var expiryDate    = (dateFormatted.getDate() - 1) + '/' + dateFormatted.getMonth() + '/' + (dateFormatted.getFullYear() + year);

Но возникают новые проблемы ... Во-первых, код становится немного запутанным. Во-вторых, эту проверку нужно будет сделать в день. а потом месяц. Есть ли более чистый и простой способ?

Также есть ' Это определенное обстоятельство, при котором мне потребуется рассчитать срок годности до «конца месяца» для этой даты. Например:

Expiry date is: +3 years

User date is: '14/10/2010'
Expiry date is: '31/10/2013'

Я надеялся, что объект Date будет поддерживать эти вычисления, но согласно https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date кажется, нет ...

12
задан Haim Evgi 8 November 2010 в 06:48
поделиться