2012-07-03 6 views
8

Google Kalender wirft mich RFC3339, aber alle meine Daten sind in diesen Millisekunden seit Januar 1970.Wie Datum in RFC 3339 zum Javascript Date-Objekt konvertieren (Millisekunden seit 1970)

rfc3999:

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

Javascript aktuelle Zeit:. (new Date()) getTime():

1341346502585 

ziehe ich die die Millisekunden, weil ich in Countdowns beschäftigen nur und nicht in Terminen.

+1

Übrigens [RFC 3339] (https://tools.ietf.org/html/rfc3339) ist ein Profil des [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601) Standards . Siehe [Was ist der Unterschied zwischen ISO 8601 und RFC 3339 Datumsformaten?] (Https://stackoverflow.com/q/522251/642706). –

Antwort

11

Date.parse sollte funktionieren: gründlich

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

jedoch, Date.parse in allen Browsern notorisch unzuverlässig ist, so dass Sie es testen wollen werden. Wenn es nicht funktioniert, dann ist hier eine Funktion:

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

Danke, funktioniert wie ein Charme. Ich benutzte riesigen Code mit Regex und es hörte für mich auf zu arbeiten, dann verbringe ich viel Zeit damit, zu googeln und zu lesen, aber bis jetzt nichts. Ich benutze es in Browser-Erweiterung, so dass es nicht plattformübergreifend sein muss. danke – DoTheEvo

+0

Leicht modifizierte Version [hier] (https://jsfiddle.net/qm9osm4a/), die mit Z oder fehlende Zeitzone, fehlt: in Zeitzone und fehlende Millisekunden. – Crashthatch

5

Es gibt zwei Javascript Datum Bibliotheken, die Sie könnten versuchen:

Beide werden Ihnen Funktionen geben, mit denen Sie eine analysieren können d erzeugt Daten in so ziemlich jedem Format.

Wenn Sie viel mit Daten arbeiten, sollten Sie eine dieser Bibliotheken verwenden; Es ist viel einfacher, als jedes Mal seine eigenen Funktionen zu steuern.

Hoffe, dass hilft.

+1

Code-Beispiel wäre genial. – Den

+0

Mit [moment.js] (http://momentjs.com/), 'moment ('2012-07-04T18: 10: 00.000 + 09: 00') sollte unix()' den Trick machen. – Marie

Verwandte Themen