Erstelle das Datum aus dem Unix-Zeitstempel und ignoriere die Zeitzone

7

Für einen oData Rest-Dienst verwende ich Moment.js, um ein Datum aus einem Unix-Zeitstempel zu erstellen, und ich möchte die Zeitzone ignorieren. Mein Datum ist "2013-12-24", das ist 1387839600 in Unix Sekunden.

Verwenden Sie

%Vor%

ergibt "2013-12-23T23: 00: 00.000Z", da ich in GMT + 1 lebe. Durch die Verwendung von

%Vor%

Ich bekomme "2013-12-24T00: 00: 00.000Z" was genau ich möchte. Ich kann einfach Zulus Zeit "Z" am Ende entfernen.

Aber die reale Darstellung meines Datums ist ein Unix-Zeitstempel. Also wenn ich das tue

%Vor%

Ich bekomme immer "2013-12-23T23: 00: 00.000Z", aber ich möchte, dass es "2013-12-24T00: 00: 00.000Z" zurückgibt.

Wo ist meine Schuld? Danke für Ihre Hilfe!

    
Windwalker 20.12.2013, 09:16
quelle

4 Antworten

16

Unix-Zeitstempel, egal ob in Sekunden oder Millisekunden, sind immer in UTC. Der Wert 1387839600 ist tatsächlich 2013-12-23 um 11:00 UTC. Verwenden Sie Websites wie diese , um dies zu überprüfen.

Wenn Sie möchten, dass es 2013-12-24 um Mitternacht UTC ist, wäre der Zeitstempel 1387843200 .

So verhält sich der Moment richtig. Sie sollten sich stattdessen auf Ihre Rest-API konzentrieren und sicherstellen, dass sie korrekt UTC und nicht einen lokalen Zeitwert ausgibt.

Wenn Sie nur den Datumsteil möchten, dann verwenden Sie nicht .toISOString . Verwenden Sie stattdessen .format wie:

%Vor%     
Matt Johnson 20.12.2013 17:44
quelle
5

Sie können Ihr eigenes Format erstellen. Alle Zeichenfolgen, die kopiert werden müssen, wie sie sind (nicht interpoliert), sollten in Klammern enthalten sein.

In Ihrer Situation sollte das funktionieren:

%Vor%     
robertklep 24.01.2014 15:27
quelle
2

Nach dem Anpassen der onChange-Funktion wie

<DateTimeField mode="date" inputFormat='MM-DD-YYYY' onChange= {this.onChange} />

Die onChange-Funktion kann folgendermaßen aussehen:

onChange: function(value) { console.log({myDate: moment.utc(value, 'x').format('YYYY-MM-DDTHH:mm:ss.SSSZ')}); },

Es scheint, dass der onChange-Wert als Unix-ms-Zeitstempel (x) anstelle des Unix-Zeitstempels (X) erscheint, falls das jemals verwirrend sein sollte.

Dies sollte eine Zeichenfolge wie 2015-07-15T15:02:00.000+00:00

ausgeben     
jenmbq 21.07.2015 15:03
quelle
1

Verwenden Sie nicht toISOString() . Verwenden Sie stattdessen etwas wie folgt:

%Vor%     
Laoyuan 06.02.2015 11:10
quelle

Tags und Links