2015-02-02 9 views
6

Ich versuche Systemdatum auf ISO-Format in folgenden Art und Weise unter Verwendung von momentjsConvert Systemdatum nach ISO-Format mit momentjs

2015-02-17T19:05:00.000Z 

Ich bin jedoch nicht in der Lage zu finden, die Parameter, die ich verwenden müssen, konvertieren zu bekommen es in dem Format, das ich will. Ich versuchte unter Stück Code ..

moment().format("YYYY-MM-DD HH:mm Z"); 

Ich bekomme Ausgabe als 2015-02-02 17: 24 + 05: 30.

Wie kann ich es als 2015-02-02T17: 24: 00.000Z

+2

Sie brauchen nicht moment.js überhaupt, die sich im internen nutzen [* Date.prototype.toISOString *] (http://ecma-international.org /ecma-262/5.1/#sec-15.9.5.43). Es gibt ein [* Polyfill auf MDN *] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) für alte Browser wie IE 8. – RobG

Antwort

10

Das ist ziemlich gut in den docs bedeckt. Aber sie sind lang, so ist hier die Besonderheiten:

Aus irgendeinem Grund momentjs Definition der ISO 8601 unterscheidet sich von der ECMAScript ein, so ist es nicht eingebaut Das Format ist YYYY-MM-DDTHH:mm:ss.sssZ und es muss in UTC sein (. die Z bezeichnet dies).

So stellt moment().utc() sicher, dass die Zeitzone korrekt ist.

Dann format es:

moment().utc().format("YYYY-MM-DDTHH:mm:ss.SSS[Z]"); 
// 2015-02-02T21:38:04.092Z 

Die Zescaped with square brackets ist. Wir können das sicher machen, weil wir UTC gezwungen haben.

Die restlichen Zeichen bezeichnen verschiedene Zeitelemente gemäß format table.


Sie könnten auch tun, was RobG sagte und das native date-Objekt verwenden. Falls Sie mit einem Moment beginnen:

moment().toDate().toISOString() 
// 2015-02-02T21:40:06.395Z 
+1

Süße Mutter des Herrn , endlich habe ich das Format für ISO für Moment 'YYYY-MM-DDTHH: mm: ss.SSS [Z]': \ –