Поиск даты путем вычитания X числа дней с определенной даты в Javascript

Я хочу найти дату, вычитая X количество дней с определенной даты в JavaScript. Моя функция JavaScript принимает 2 параметра. Одним из них является значение даты, а другое - количество дней, которое необходимо вычесть.

Например, я передаю дату моего аргумента как 27 июля 2009 года, и я передаю свой другой аргумент как 3. Поэтому я хочу рассчитать дату за 3 дня до 27 июля 2009 года. Таким образом, итоговая дата, которую мы должны получить, - 24 июля 2009 года Как это возможно в JavaScript. Спасибо за любую помощь.

Ответ 1

Просто:

yourDate.setDate(yourDate.getDate() - daysToSubtract);

Ответ 2

function date_by_subtracting_days(date, days) {
    return new Date(
        date.getFullYear(), 
        date.getMonth(), 
        date.getDate() - days,
        date.getHours(),
        date.getMinutes(),
        date.getSeconds(),
        date.getMilliseconds()
    );
}

Ответ 3

Никогда не используйте это решение yourDate.setDate(yourDate.getDate() - daysToSubtract);

он не будет работать, если ваша дата будет 1-го числа любого месяца, и вы хотите удалить несколько дней, скажем, 1.

Вместо этого перейдите к решению ниже, которое будет работать всегда

var newDate = new Date (yourDate.getTime() - (дни * 24 * 60 * 60 * 1000));

Ответ 4

Здесь я отправляю еще один ответ и верну дату в определенном формате.

Сначала вы можете получить текущую дату 10/08/2013, как показано ниже

function Cureent_Date() {
    var today_GMT = new Date();
    var dd = today_GMT.getDate();
    var mm = today_GMT.getMonth() + 1; //January is 0!
    var yyyy = today_GMT.getFullYear();
    if (dd < 10) {
        dd = '0' + dd
    }
    if (mm < 10) {
        mm = '0' + mm
    }
    current_date = mm + '/' + dd + '/' + yyyy;
    alert("current_date"+current_date);

    Back_date();
}

Теперь верните дату на основе X дней

function Back_date()
{    
    var back_GTM = new Date(); back_GTM.setDate(back_GTM.getDate() - 2); // 2 is your X
    var b_dd = back_GTM.getDate();
    var b_mm = back_GTM.getMonth()+1;
    var b_yyyy = back_GTM.getFullYear();
    if (b_dd < 10) {
        b_dd = '0' + b_dd
    }
    if (b_mm < 10) {
        b_mm = '0' +b_mm
    }

    var back_date=  b_mm + '/' + b_dd + '/' + b_yyyy;
    alert("back_date"+back_date);
}

Итак, Сегодня 10/08/2013, поэтому он вернет 10/06/2013.

Проверить демо-версию здесь Надеюсь, этот ответ поможет вам.

Ответ 5

Здесь пример, однако это не делает никакой проверки (например, если вы используете его в 2009/7/1, он будет использовать отрицательный день или выбросить ошибку.

function subDate(o, days) {
// keep in mind, months in javascript are 0-11
return new Date(o.getFullYear(), o.getMonth(), o.getDate() - days);;
}

Ответ 6

Это то, что я сделал бы. Обратите внимание, что вы можете упростить выражение, я только что написал его, чтобы понять, что вы умножаете количество дней на количество миллисекунд в день.

 var newDate = new Date( yourDate.getTime() - (days * 24 * 60 * 60 * 1000) );

Ответ 7

Еще один вариант, который я написал:

Библиотека DP_DateExtensions

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

Поддерживает форматирование даты и времени, математику даты (части добавления/вычитания даты), сравнение даты, синтаксический анализ и т.д.

Ответ 8

это относится к приведенному выше ответу проверьте эту скрипту

https://jsfiddle.net/uniyalguru/azh65aa0/

function Cureent_Date() {
var today_GMT = new Date();
var dd = today_GMT.getDate();
var mm = today_GMT.getMonth() + 1; //January is 0!
var yyyy = today_GMT.getFullYear();
if (dd < 10) {
    dd = '0' + dd
}
if (mm < 10) {
    mm = '0' + mm
}
current_date = mm + '/' + dd + '/' + yyyy;