Розбираємо рядок на сьогодні з moment.js


Відповіді:


207

Вам потрібно скористатися .format()функцією.

MM - число місяця

MMM - Слово місяця

var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY');
var dateMonthAsWord = moment("2014-02-27T10:00:00").format('DD-MMM-YYYY');

ПІДМОГА


Як щодо існуючих змінних дат. var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);Подає помилкову помилку дати ?????
Андрій День

3
спробуйте '' var dateCalendarPart = момент (дата, 'YYYY / MM / DD'); оповіщення (дата); ''
ranjan

@AndrewDay ... "01-02-2017", "2 січня" або "1 лютого"? Momentjs не може прочитати вашу думку.
листопад

3
Ця відповідь працює лише тому, що рядок ОП у стандартному форматі дати. Відповідь Стівена Пола показує, як перетворити будь-який рядок із заданим форматом на дату, якою можна керувати.
Агамемнус

364

Мені завжди здається, що я тут висаджуюсь лише для того, щоб усвідомити, що назва та питання не зовсім узгоджуються.

Якщо ви хочете миттєву дату з рядка :

const myMoment = moment(str, 'YYYY-MM-DD')

З моменту документації :

Замість зміни власного Date.prototype, Moment.js створює обгортку для об'єкта Date.

Якщо замість цього ви хочете об'єкт дати JavaScript від рядка :

const myDate = moment(str, 'YYYY-MM-DD').toDate();

16
Так, відповідає лише цей. Розбиття рядка на сьогоднішній день (означає вхід str, вихід - дата)
deathangel908

@ deathangel908 Лол, уточнення не потрібно, питання ідеально зрозуміле.
листопад

20

Не потрібно для moment.js для аналізу даних, оскільки її формат є стандартним:

var date = new Date('2014-02-27T10:00:00');
var formatted = moment(date).format('D MMMM YYYY');

http://es5.github.io/#x15.9.1.15


1
Це правда, немає потреби в moment.js, якщо у вас є рядок дати ISO ... Ви також можете використовувати Date.parse, щоб зрозуміти, що ви працюєте з рядками ISO (оскільки конструктор може приймати інші формати)
Juan Мендес

3
Не працює в IE8 ... Який сюрприз ... Дає NaN.
листопад

@JuanMendes, ваше посилання говорить, що Date.parseдзвонить new Date, тому це не повинно впливати.
sk904861

6

Момент був ідеальним для того, що мені потрібно. ПРИМІТКА, він ігнорує години та хвилини і просто робить це, якщо ви дозволите. Це було ідеально для мене, оскільки мій виклик API повертає дату та час, але я дбаю лише про дату.

function momentTest() {

  var varDate = "2018-01-19 18:05:01.423";
  var myDate =  moment(varDate,"YYYY-MM-DD").format("DD-MM-YYYY");
  var todayDate = moment().format("DD-MM-YYYY");  
  var yesterdayDate = moment().subtract(1, 'days').format("DD-MM-YYYY");   
  var tomorrowDate = moment().add(1, 'days').format("DD-MM-YYYY");

  alert(todayDate);

  if (myDate == todayDate) {
    alert("date is today");
  } else if (myDate == yesterdayDate) {
    alert("date is yesterday");
  } else if (myDate == tomorrowDate) {
    alert("date is tomorrow");
  } else {
    alert("It's not today, tomorrow or yesterday!");
  }
}


0
  • Як змінити будь-яку дату рядка на дату об'єкта (також за допомогою moment.js):

let startDate = "2019-01-16T20:00:00.000"; let endDate = "2019-02-11T20:00:00.000"; let sDate = new Date(startDate); let eDate = new Date(endDate);

  • з moment.js:

startDate = moment(sDate); endDate = moment(eDate);

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.