Analysieren Sie den aktuellen String mit moment.js

Antworten:

204

Sie müssen die .format()Funktion verwenden.

MM - Monatszahl

MMM - Monatswort

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

GEIGE

David East
quelle
Was ist mit vorhandenen Datumsvariablen? var date = moment("2014-02-27T10:00:00").format('DD-MM-YYYY'); var dateCalendarPart = moment(date).format('YYYY/MM/DD'); alert(date); alert(dateCalendarPart);Gibt einen ungültigen Datumsfehler aus ?????
Andrew Day
3
try '' var dateCalendarPart = moment (Datum, 'JJJJ / MM / TT'); Alarm (Datum); ''
Ranjan
@ AndrewDay ... "01-02-2017", "2. Januar" oder "1. Februar"? Momentjs können deine Gedanken nicht lesen.
Blatt
3
Diese Antwort funktioniert nur, weil die Zeichenfolge des OP in einem Standard-Datumsformat vorliegt. Die Antwort von Stephen Paul zeigt, wie eine Zeichenfolge in einem bestimmten Format in ein Datum konvertiert werden kann, das manipuliert werden kann.
Agamemnus
360

Ich scheine immer hier zu landen, nur um zu erkennen, dass Titel und Frage nicht ganz übereinstimmen.

Wenn Sie ein Momentdatum aus einer Zeichenfolge möchten :

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

Ab Moment Dokumentation :

Anstatt den nativen Date.prototype zu ändern, erstellt Moment.js einen Wrapper für das Date-Objekt.

Wenn Sie stattdessen ein Javascript-Datumsobjekt aus einer Zeichenfolge möchten :

const myDate = moment(str, 'YYYY-MM-DD').toDate();
Stephen Paul
quelle
16
Ja, nur dieser antwortet. Parsing String bis Datum (was bedeutet, Eingabe ist str, out ist Datum)
Deathangel908
@ Deathangel908 Lol, es besteht kein Klärungsbedarf, die Frage ist völlig klar.
Blatt
20

Moment.js muss nicht analysiert werden, da das Format das Standardformat ist:

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

Blatt
quelle
1
Das ist die Wahrheit, Sie brauchen moment.js nicht, wenn Sie eine ISO-Datumszeichenfolge haben ... Sie können auch Date.parse verwenden , um klarer zu machen, dass Sie mit ISO-Zeichenfolgen arbeiten (da der Konstruktor andere Formate annehmen kann)
Juan Mendes
3
Funktioniert nicht in IE8 ... Was für eine Überraschung ... gibt NaN.
Blatt
@JuanMendes, sagt Ihr Link, der Date.parseanruft new Date, also sollte es keinen Unterschied machen.
sk904861
6

Moment war perfekt für das, was ich brauchte. HINWEIS: Es ignoriert die Stunden und Minuten und macht es nur, wenn Sie es zulassen. Dies war perfekt für mich, da mein API-Aufruf Datum und Uhrzeit zurückbringt, mir aber nur das Datum wichtig ist.

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
quelle
0

Vielleicht versuchen Sie die Intl Polyfill für IE8 oder den Olyfill-Service?

oder

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

Davet
quelle
2
Internet Explorer ist nicht mehr.
Steve K
Oh, wie ich von diesem Privileg träume
Jonathan dos Santos
0
  • So ändern Sie ein Zeichenfolgendatum in ein Objektdatum (auch mit 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);

  • mit moment.js:

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

MorLavender
quelle