dateJS строка даты добавить 5 дней


154

У меня есть строка даты начала «20.03.2014», и я хочу добавить к этому 5 дней с помощью moment.js, но я не получаю новую дату «25.03.2014» в окне предупреждения.

вот мой код JavaScript:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add("DD-MM-YYYY", 5);

alert(new_date);

вот мой jsfiddle: http://jsfiddle.net/jbgUt/1/

Как я могу решить это?

Мне нравится этот формат строки "25.03.2014"

Надеюсь, кто-нибудь может мне помочь.

Ответы:


326

ОБНОВЛЕНО: 19 января 2016 г.

На момент 2.8.4 - использовать .add(5, 'd')(или .add(5, 'days')) вместо.add('d', 5)

var new_date = moment(startdate, "DD-MM-YYYY").add(5, 'days');

Спасибо @Bala за информацию.

ОБНОВЛЕНО: 21 марта 2014 г.

Это то, что вам нужно сделать, чтобы получить этот формат.

Вот обновленная скрипка

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

var day = new_date.format('DD');
var month = new_date.format('MM');
var year = new_date.format('YYYY');

alert(day + '.' + month + '.' + year);

ОРИГИНАЛ: 20 марта 2014 г.

Вы не говорите, как / какую единицу добавить. Используйте -

 var new_date = moment(startdate, "DD-MM-YYYY").add('days', 5);

я хочу видеть этот формат "25.03.2014" в окне предупреждения, как я могу это реализовать?
Дейв

2
На момент 2.8.4 я вижу устаревшее сообщение с надписью ('days', 5). Вместо этого используйте add (5, 'days').
Бала

1
Правильный синтаксис: moment (). Add (5, 'days'). Format ("D / M / YYYY"). Некоторое
Костас Бакулиас,

16

Функция add () возвращает старую дату, но меняет оригинальную дату :)

startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days');
alert(new_date);

7
Да, это странно. При проверке moment(startdate).add(5, 'days')в консоли вы получаете Moment {_isAMomentObject: true, _i: "[the original date]",}, и я был уверен, что addметод не работает. Потратив несколько минут, я понял, что метод БЫЛ работает, потому что если вы откроете объект, который вы получите Moment _d : [The date with the addition] _f : "YYYY-MM-DDTHH:mm:ss" _i : [The original date]... Дата фактически изменилась (вы получите правильный результат moment(startdate).add(5, 'days').format('YYYYMMDD')), но сбивает с толку, что кажется, что дата не т изменилось. : - |
Гилад Барнер

14
moment(moment('2015/04/09 16:00:00').add(7, 'd').format('YYYY/MM/DD HH:mm:mm'))

должен отформатировать, а затем снова преобразовать в момент.


Вы сэкономили мне много минут
:)




2

Вы можете сократить сказанное в нескольких строках кода:

var nowPlusOneDay = moment().add('days', 1);
var nowPlusOneDayStr = nowPlusOneDay.format('YYYY-MM-DD');

alert('nowPlusOneDay Without Format(Unix Date):'+nowPlusOneDay);
alert('nowPlusOneDay Formatted(String):'+nowPlusOneDayStr);

2

Чтобы получить действующий рабочий пример, который возвращает то, что можно было бы ожидать:

var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
var thing = new_date.add(5, 'days').format('DD/MM/YYYY');
window.console.log(thing)

0

обновлено:

startdate = "20.03.2014";
var new_date = moment(startdate, "DD-MM-YYYY").add(5,'days');

alert(new_date)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.