2015-02-02 12 views
6

Sto cercando di convertire data di sistema in formato ISO nella moda di seguito utilizzando momentjsConverti data di sistema al formato utilizzando ISO momentjs

2015-02-17T19:05:00.000Z 

Sono però riuscito a trovare il parametro che ho bisogno di usare per ottenere nel formato che voglio. Ho provato sotto il pezzo di codice ..

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

Ottengo come 2015-02-02 17: 24 + 05: 30.

Come posso ottenere come 2015-02-02T17: 24: 00.000Z

+2

Non hanno bisogno moment.js a tutti, utilizzare il built-in [* Date.prototype.toISOString *] (http://ecma-international.org /ecma-262/5.1/#sec-15.9.5.43). C'è un [* polyfill su MDN *] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) per vecchi browser come IE 8. – RobG

risposta

10

Questo è abbastanza ben coperta in docs. Ma sono lunghi, quindi ecco le specifiche:

Per qualche motivo, la definizione di momentjs ISO 8601 differisce da quella ECMAScript, quindi non è incorporata. Il formato è YYYY-MM-DDTHH:mm:ss.sssZ e deve essere in UTC (il Z denota questo).

Quindi, moment().utc() assicura che il fuso orario sia corretto.

Poi format esso:

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

Il Z è escaped with square brackets. Possiamo farlo in sicurezza perché abbiamo forzato l'UTC.

Il resto dei caratteri indica vari elementi temporali in base allo format table.


Si potrebbe anche fare ciò che RobG ha detto e utilizzare l'oggetto data nativo. Nel caso in cui si inizia con un momento:

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

Dolce madre di lord , finalmente ho ottenuto il formato per ISO per il momento 'AAAA-MM-GGTHH: mm: ss.SSS [Z]': \ –