2013-11-11 4 views
0

Я рассчитываю 12 дней до даты с сегодняшнего дня. Но он не возвращает правильную дату. Например, на сегодняшний день, 11/11/2013 в (мм/дд/гггг), он возвращается 10/30/2013, когда он должен вернуться 31.10.2013.JavaScript расчет даты с сегодняшнего дня до 7 дней до

Вот код

var d = new Date(); 
d.setDate(d.getDate() - 12); 
d.setMonth(d.getMonth() + 1 - 0); 
var curr_date = d.getDate(); 
var curr_month = d.getMonth(); 
var curr_year = d.getFullYear(); 
if (curr_month < 10 && curr_date < 10) { 
    var parsedDate = "0" + curr_month + "/" + "0" + curr_date + "/" + curr_year; 
    alert(parsedDate); 
} else if (curr_month < 10 && curr_date > 9) { 
    var parsedDate = "0" + curr_month + "/" + curr_date + "/" + curr_year; 
    alert(parsedDate); 
} else if (curr_month > 9 && curr_date < 10) { 
    var parsedDate = curr_month + "/" + "0" + curr_date + "/" + curr_year; 
    alert(parsedDate); 
} else { 
    var parsedDate = curr_month + "/" + curr_date + "/" + curr_year; 
    alert(parsedDate); 
} 
+2

одно слово: [moment.js] (http://momentjs.com/) – georg

+0

Проверьте математику, 12 дней назад - 30 октября. – j08691

+0

Не часть вашего вопроса, но почему вы вычитаете 0 в 'd.setMonth (d.getMonth() + 1 - 0);' – Schleis

ответ

19

Проблема решена

var days; // Days you want to subtract 
var date = new Date(); 
var last = new Date(date.getTime() - (days * 24 * 60 * 60 * 1000)); 
var day =last.getDate(); 
var month=last.getMonth()+1; 
var year=last.getFullYear(); 
8

Попытка вычитать дни сложно. Было бы лучше вычесть из метки времени и изменить дату.

Чтобы вычесть 12 дней сделать:

var d = new Date(); 
    var ts = d.getTime(); 
    var twelveDays = ts - (12 * 24 * 60 * 60 * 1000); 
    d.setUTCDate(twelveDays); 
+0

Я получаю сообщение об ошибке var ts = d.UTC(); Я использую java script 1.9.2 – ozil

+0

Извините неправильный метод. Это должен быть getTime() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime – Schleis

Смежные вопросы