Analizuj ciąg na bieżąco za pomocą funkcji moment.js.

Odpowiedzi:

205

Musisz użyć .format()funkcji.

MM - Numer miesiąca

MMM - Słowo miesiąca

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

SKRZYPCE

David East
źródło
A co z istniejącymi zmiennymi dat. var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);Daje nieprawidłowy błąd daty ?????
Andrew Day
3
try '' var dateCalendarPart = moment (data, 'RRRR / MM / DD'); alert (data); ''
ranjan
@AndrewDay ... "01-02-2017", „2 stycznia” czy „1 lutego”? Momentjs nie może czytać w twoich myślach.
liść
3
Ta odpowiedź działa tylko dlatego, że ciąg OP jest w standardowym formacie daty. Odpowiedź Stephena Paula pokazuje, jak przekonwertować dowolny ciąg, biorąc pod uwagę określony format, na datę, którą można manipulować.
Agamemnus
361

Wydaje mi się, że zawsze ląduję tutaj tylko po to, aby zdać sobie sprawę, że tytuł i pytanie nie są do końca zgodne.

Jeśli chcesz datować moment z łańcucha :

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

Od chwili dokumentacji :

Zamiast modyfikować natywny Date.prototype, Moment.js tworzy opakowanie dla obiektu Date.

Jeśli zamiast tego chcesz otrzymać obiekt Date w javascript z łańcucha :

const myDate = moment(str, 'YYYY-MM-DD').toDate();
Stephen Paul
źródło
16
Tak, tylko ten odpowiada. Parsowanie ciągu do daty (co oznacza, że ​​dane wejściowe to str, out to data)
deathangel908
@ deathangel908 Lol, nie ma potrzeby wyjaśniania, pytanie jest całkowicie jasne.
liść
20

Nie ma potrzeby, aby moment.js analizował dane wejściowe, ponieważ jego format jest standardowy:

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

liść
źródło
1
To prawda, moment.js nie jest potrzebny, jeśli masz ciąg daty ISO ... Możesz także użyć Date.parse, aby mieć większą pewność , że pracujesz z ciągami ISO (ponieważ konstruktor może przyjmować inne formaty)
Juan Mendes
3
Nie działa w IE8 ... Co za niespodzianka ... Daje NaN.
liść
@JuanMendes, twój link mówi, że Date.parsedzwoni new Date, więc nie powinno to robić różnicy.
sk904861
6

moment był idealny na to, czego potrzebowałem. UWAGA, ignoruje godziny i minuty i po prostu robi swoje, jeśli na to pozwolisz. To było dla mnie idealne, ponieważ moje wywołanie API przywraca datę i godzinę, ale obchodzi mnie tylko data.

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
źródło
0
  • Jak zmienić datę w dowolnym ciągu na datę obiektu (również z 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);

  • z moment.js:

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

MorLavender
źródło