momentJS рядок дати додайте 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, я бачу застаріле повідомлення з добавкою ('днів', 5). Використовуйте натомість додавання (5, "днів").
Бала

Правильний синтаксис: moment (). Add (5, 'days'). Формат ("D / M / YYYY") Ви можете деякий час подивитися тут: momentjs.com/docs/#/manipulating/add
Costas Bakoulias

16

Функція add () повертає стару дату, але змінює початкову дату :)

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

5
Так, це дивно. Перевіряючи 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')), але це заплутано, що, здається, дата не стала ' t змінився. : - |
Гілад Барнер

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

має відформатувати, а потім знову перетворити на момент.


Ви врятували мені багато хвилин
:)



3
  1. додати https://momentjs.com/downloads/moment-with-locales.js на свою html сторінку
  2. var todayDate = moment().format('DD-MM-YYYY');//to get today date 06/03/2018 if you want to add extra day to your current date тоді
  3. var dueDate = moment().add(15,'days').format('DD-MM-YYYY')// to add 15 days to current date..

пункти 2 і 3 використовуються у вашому коді jquery ...


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.