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


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();

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


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!");
  }
}


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);

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.