2012-07-03 12 views
8

Google calendario getta a me rfc3339, ma sono tutte le mie date in quei millisecondi Da gen 1970.come convertire la data in RFC 3339 per l'oggetto data javascript (millisecondi dal 1970)

rfc3999:

2012-07-04T18:10:00.000+09:00 

javascript tempo corrente:. (new date()) getTime():

1341346502585 

preferisco i millisecondi, perché ho a che fare solo in conti alla rovescia e non in date.

+1

A proposito [RFC 3339] (https://tools.ietf.org/html/rfc3339) è un profilo dello standard [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601) . Vedi [Qual è la differenza tra i formati di data ISO 8601 e RFC 3339?] (Https://stackoverflow.com/q/522251/642706). –

risposta

11

Date.parse dovrebbe funzionare:

Date.parse('2012-07-04T18:10:00.000+09:00') 

Tuttavia, Date.parse è notoriamente inaffidabili tra i vari browser, quindi ti consigliamo di testare a fondo. Se non funziona, allora ecco una funzione:

var googleDate = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d{3})([+-]\d{2}):(\d{2})$/; 

function parseGoogleDate(d) { 
    var m = googleDate.exec(d); 
    var year = +m[1]; 
    var month = +m[2]; 
    var day = +m[3]; 
    var hour = +m[4]; 
    var minute = +m[5]; 
    var second = +m[6]; 
    var msec = +m[7]; 
    var tzHour = +m[8]; 
    var tzMin = +m[9]; 
    var tzOffset = new Date().getTimezoneOffset() + tzHour * 60 + tzMin; 

    return new Date(year, month - 1, day, hour, minute - tzOffset, second, msec); 
} 
+2

Grazie, funziona come un fascino. Ho usato un codice enorme con regex e ha smesso di funzionare per me, quindi trascorro molto tempo a googling e leggere qui, ma nulla, fino ad ora. Lo sto usando nell'estensione del browser, quindi non ha bisogno di essere crossplatform. grazie – DoTheEvo

+0

Versione leggermente modificata [qui] (https://jsfiddle.net/qm9osm4a/) che gestisce Z o il fuso orario mancante, mancante: in fuso orario e millisecondi mancanti. – Crashthatch

5

Ci sono due data librerie javascript che si potrebbe provare:

Entrambe ti daranno le funzioni che ti permetteranno di analizzare un d generare date in quasi tutti i formati.

Se stai lavorando molto con le date, ti consigliamo di usare una di queste librerie; è molto meno fastidioso di dover rotolare le proprie funzioni ogni volta.

Spero che questo aiuti.

+1

Esempio di codice sarebbe fantastico. – Den

+0

Utilizzando [moment.js] (http://momentjs.com/), 'momento ('2012-07-04T18: 10: 00.000 + 09: 00'). Unix()' dovrebbe fare il trucco. – Marie

Problemi correlati