2013-08-31 19 views
5

Sto tentando di inviare il timestamp UTC al servizio di riposo dal mio client javascript. Non ero in grado di creare il timestamp come "2013-08-30T19:52:28.226Z" utilizzando javascript.Creazione timestamp UTC in Javascript

var rawDate = date.getUTCDate().toString(); 

vedo questo esempio ma non utile per me. utc-time-stame-javascript

+0

Intendevi 'new Date()'? Restituisce la data corrente (completa), con tutte le proprietà dell'oggetto Date, nel tuo caso '(new Date()). ToJSON()' dovrebbe funzionare –

+0

Come la mia domanda voglio 2013-08-31T9: 4: 51.859 Z in –

+0

new Date(). ToJSON() restituisce 2013-08-31T09: 04: 51.863Z –

risposta

8

È possibile utilizzare date.toJSON().

new Date().toJSON().toString() 
"2013-08-31T09:05:07.740Z" 

Vedi MDN o MSDN

+0

vedere il mio desiderio risultato 2013-08-31T9: 9: 55.893Z –

+0

Oh ow. Un link alle scuole W3? Ecco una risorsa migliore che discute la funzione: [MDN Date # toJSON] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON?redirectlocale=en-US&redirectslug=JavaScript % 2FReference% 2FGlobal_Objects% 2FDate% 2FtoJSON) –

+0

Qual è il problema con W3 Schools? –

0

1) Ottenere la data.

var now = new Date(); 

2) Convertire in formato UTC come di seguito, per reference.

var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 
        now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 

3) Utilizzando toJSON, ottenere il formato.

now_utc.toJSON() 

Infine,

var now = new Date(); 
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 
alert(now_utc.toJSON()); 

Scegli questa JSFiddle

+0

Not utc time .. 2013-08-31T03: 44: 49.000Z –

1
function getUTCISODateString(d){ 
    function pad(n){return n<10 ? '0'+n : n}; 
    function threePad(n){return n<10 ? '00'+n : (n < 100 ? '0' + n : n)}; 
    return d.getUTCFullYear()+'-' 
      + pad(d.getUTCMonth()+1)+'-' 
      + pad(d.getUTCDate())+'T' 
      + pad(d.getUTCHours())+':' 
      + pad(d.getUTCMinutes())+':' 
      + pad(d.getUTCSeconds())+ '.' 
        + threePad(d.getUTCSeconds()) + 'Z'; 
} 

Non testato:

+0

'new Date(). ToJSON()' –

+0

@izuriel yes ofcourse se IE7 non è targetizzato. – sabithpocker

+0

Se IE7 fosse una preoccupazione per il supporto, allora porterei in una libreria come [json2] (https://github.com/douglascrockford/JSON-js) per eseguire il polyfill su quella data su 'Date' e su' JSON.stringify 'e' JSON.parse'. –

0

Questa libreria può farlo per voi. Non che sia grande http://momentjs.com

moment().toISOString() 
// 2013-02-04T22:44:30.652Z 
+0

Il formato è disattivato. I suoi requisiti richiedono millisecondi aggiunti prima del fuso orario. –

+0

@izuriel Aggiornamento della risposta, la libreria non ha alcun formato –

+0

L'inclusione di 'momento' qui (mentre una grande libreria) non è necessaria a meno che non sia necessario eseguire ulteriori operazioni di data. Come risposto da Benoit Blanchon, questo può essere ottenuto in modo nativo con 'new Date(). ToJSON()' ma ancora più semplice con 'JSON.stringify ({post_date: new Date()});' nel qual caso viene chiamato automaticamente. Avrei dovuto accennarlo prima, ma buono sull'aggiornamento! –

0

Vorrei suggerire che si estende l'oggetto Date() e la costruzione della stringa di te stesso, momento lo fa per voi, ma io non sono sicuro che è nel formato esatto avete bisogno. Ho appena scritto questo rapidamente, ma dovrebbe essere una piastra di partenza decente per la caldaia.

Date.prototype.toLongUTCString = function() { 
    var self = this; 
    return self.getUTCFullYear() + '-' + (self.getUTCMonth() < 10 ? '0' : '') + 
      (self.getUTCMonth() +1)+ '-' + (self.getUTCDate() < 10 ? '0' : '') + 
      self.getUTCDate() + 'T' + self.getUTCHours() + ':' + self.getUTCMinutes() + 
      ':' + self.getUTCSeconds() + '.' + self.getUTCMilliseconds() + 'Z'; 
    }; 

guarda anche:

http://jsfiddle.net/4Kczy/

/edit: non la briga di chiedere che cosa i browser bisogno di un essere supportato (tosse, IE).

+0

Questa funzionalità può essere aggiunta alla classe' Date' così come al completo 'JSON' di parsing/string building con [json2] (https://github.com/douglascrockford/JSON-js). A proposito, una regola empirica comune è evitare di estendere il più possibile le classi base. –

+0

@izuriel: dipende da cosa stai estendendo, ad es. questa funzione non sarà mai implementata nelle specifiche core (diversamente da map/filter/reduce potrebbe essere implementata in qualche punto in futuro in IE). Per quanto riguarda la lib di json2, non è sempre necessaria una motosega per abbattere un ramo. Saluti! – konp