Разобрать строку по дате с помощью 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');

FIDDLE

Дэвид Восток
источник
Как насчет существующих переменных даты. 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
try '' var dateCalendarPart = момент (дата, 'ГГГГ / ММ / ДД'); оповещения (дата); ''
Ранжан
@AndrewDay ... "01-02-2017", "2 января" или "1 февраля"? Моменты не могут читать твои мысли.
лист
3
Этот ответ работает только потому, что строка ОП имеет стандартный формат даты. Ответ Стивена Пола показывает, как преобразовать любую строку, учитывая определенный формат, в дату, которой можно манипулировать.
Агамемнус
365

Кажется, я всегда приземляюсь здесь только для того, чтобы понять, что заголовок и вопрос не совсем совпадают.

Если вы хотите точную дату из строки :

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

С момента документации :

Вместо изменения собственного Date.prototype, Moment.js создает оболочку для объекта Date.

Если вместо этого вам нужен объект Date из строки javascript :

const myDate = moment(str, 'YYYY-MM-DD').toDate();
Стивен Пол
источник
16
Да, только этот ответ. Синтаксическая строку даты (то есть ввод ул, из является дата)
deathangel908
@ deathangel908 Lol, нет необходимости в разъяснениях, вопрос совершенно ясен.
лист
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 (поскольку конструктор может принимать другие форматы)
Хуан Мендес
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!");
  }
}
Gareth
источник
0

Может быть, попробовать Polyfill Intl для IE8 или службы olyfill?

или

https://github.com/andyearnshaw/Intl.js/

Davet
источник
2
Internet Explorer больше не существует.
Стив К
о, как я мечтаю об этой привилегии
Джонатан душ Сантуш
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);

MorLavender
источник