2016-09-27 1 views
5

Ich verwende derzeit Moment js, um eine ISO 8601 Zeichenfolge in Datum und Uhrzeit zu analysieren, aber es funktioniert nicht ordnungsgemäß. Was mache ich falsch? Und ich würde andere einfachere Lösungen auch nehmen.Wie analysiert man ISO 8601 in Datum und Uhrzeit Format mit Moment js in Javascript?

Die ISO 8601 Ich mag würde analysieren: "2011-04-11T10:20:30Z" in Datum in string: "2011-04-11" und Zeit in string: "10:20:30"

und versuchte console.log(moment("2011-04-11T10:20:30Z" ,moment.ISO_8601)) und console.log(moment("2011-04-11T10:20:30Z" , ["YYYY",moment.ISO_8601]) als Test, aber es gibt nur ein Objekt mit allen verschiedenen Arten von Eigenschaften.

+0

Mit String-Manipulation: 'str.slice (0, -1) .split ('T');' – Xotic750

Antwort

10

Mit moment.js

var str = '2011-04-11T10:20:30Z'; 
 
var date = moment(str); 
 
var dateComponent = date.utc().format('YYYY-MM-DD'); 
 
var timeComponent = date.utc().format('HH:mm:ss'); 
 
console.log(dateComponent); 
 
console.log(timeComponent);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>

Oder einfach mit String-Manipulation

var str = '2011-04-11T10:20:30Z'; 
 
var parts = str.slice(0, -1).split('T'); 
 
var dateComponent = parts[0]; 
 
var timeComponent = parts[1]; 
 
console.log(dateComponent); 
 
console.log(timeComponent);

+0

Sie sind erstaunlich! Genau das, was ich gesucht habe! Ich danke dir sehr. Akzeptiert die Antwort und Upvoted. Nur eine kurze Frage, sind dateComponent und timeComponent beide in String-Typ? – Walter

+0

In beiden Beispielen sind sie Arten von "String". – Xotic750

+0

genau das, was ich gesucht habe. Danke nochmal Xotic750. Cooles Profil Bild btw;) – Walter

9

Es gibt zwei Teile für den Momentbetrieb: Datum/Uhrzeit einlesen und wieder ausspucken. Sie haben den ersten Teil bekam:

moment("2011-04-11T10:20:30Z") 

aber dann müssen Sie eine Ausgabefunktion aufrufen, zB:

moment("2011-04-11T10:20:30Z").format('YYYY-MM-DD h:mm:ss a') 
+0

Vielen Dank für die Antwort. Derzeit ist es Konsolenprotokollierung: '2011-04-11 3:20:30 '. Das Datum ist also korrekt, aber die Stunde ist falsch. Sollte es nicht hh sein: mm: ss? Versucht es, aber immer noch 03 statt 10 zu sein. – Walter

+0

Eine vollständige Aufschlüsselung aller Formatierungsmuster finden Sie hier: http://momentjs.com/docs/#/displaying/. Ich glaube jedoch nicht, dass die Zeit ein Formatierungsproblem ist; Ich bin mir ziemlich sicher, dass es ein Zeitzonenproblem ist. Ihre Anfangsdatumszeichenfolge fehlt ein Zeitzonenbit, daher beschließt Moment, es als eine Zeitzone zu interpretieren (ich würde 0 GMT erraten) und zeigt Ihnen dann die Zeit relativ zu Ihrer aktuellen Zeitzone an (ich würde annehmen, dass Sie +/- 7 leben) von GMT?). Sie sollten die Moment-Dokumentation (oder vielleicht eine separate Frage) zu Zeitzonen lesen, um dies zu beheben. – machineghost

+0

Als Nebenbemerkung sind Zeitzonen eines der nervigsten Dinge in Moment, und ich wünschte oft, sie würden über sie schreiben ... aber letztendlich bin ich als Webentwickler froh, dass sie das nicht tun. Einige Ihrer Benutzer werden Ihre Website wahrscheinlich in einer anderen Zeitzone als Sie verwenden. Daher ist es wichtig, dass Sie darüber nachdenken, wie Sie Daten auf Ihrem Server speichern und wie der JS/Moment-Code sie beim Anzeigen für den Benutzer lokalisiert . – machineghost

Verwandte Themen