2013-12-21 4 views
1

У меня есть дата 2013-12-28, и я хочу добавить к ней еще один или несколько дней. поэтому, если я добавлю еще один день, это будет 2013-12-29.
Я пытаюсь добавить его, добавив значение его даты (дата 28 + 1), он работает, но что, если я добавлю еще 7 дней? дата будет 35, и, конечно, это не допустимый формат даты.
Может кто-нибудь мне помочь?
вот пример моего сценария:Рассчитать дату javascript

var d = new Date(); 
var Y = d.getFullYear(); 
var M = d.getMonth()+1; 
var D = d.getDate(); 
var DT = d.getDate()+1;// what if i + 20 days from today? the format would be invalid 

var today = Y+"-"+M+"-"+D; 
var tomorrow = Y+"-"+M+"-"+DT; 
alert(today+" <> "+tomorrow); 
// "<>" means nothing 
+0

Я проверю. спасибо –

ответ

3

Если у вас уже есть объект даты, как в коде вы показываете:

var d = new Date(); 

... то вы можете добавить 7 дней к ней, как это :

d.setDate(d.getDate() + 7); 

... и он будет автоматически увеличивать месяц при необходимости.

Дальнейшее чтение:

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

+0

+1, никогда не знал setDate будет делать автоматический приращение – TwilightSun

+0

aha, setDate(). это помогает: D –

5

Вы можете попробовать, как это с помощью getdate(), setdate() и getdate():

var myDate = new Date(); 
myDate.setDate(myDate.getDate() + 7); 
+1

есть, комплектDate(). это помогает –

+0

@OkiErieRinaldi: - Да, это трюк для вас! :) –

0

Решение заключается в преобразовании строки даты в метку времени, и они добавляют 3600 * 24 * < количество дней > в метка времени и их конвертировать ее обратно в строку даты.

Код может выглядеть следующим образом:

function addDaysToDate(date, days) { 
    var time = Date.parse(date) + days * 24 * 3600; 
    date = new Date(time); 
    return date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate(); 
} 
var date = '2013-12-28'; 
console.log(addDaysToDate(date, 7)); 
Смежные вопросы