Erstellen Sie ein Datum UTC mit einem timezone-basierten timestamp
Sonderbare Frage, aber Sie müssen zuerst wissen, dass die Facebook-API werden alle Daten mit einem Zeitstempel (long = Anzahl der zweiten) gestartet 01/01/1970 00:00:00, die sich auf PDT-Zeitzone (Pacifica Zeit).
Diese Anzahl der zweiten nicht einen UTC-timestamp-aber ein fake, basierend auf einem nicht-standard-Speicherort.
Gibt es eine einfache Möglichkeit in java zu konvertieren, das lange timestamp in ein normales Datum-Objekt, das ich gebrauchen könnte (und drucken im französischen format mit standard-Datum formaters) ?
PS : Es ist nicht nur eine +7 Stunden Frage, die Sommerzeit in dieser Zeitangabe. Darüber hinaus haben wir auch die Sommerzeit in Frankreich, aber nicht die selben...
Dank
UPDATE :
Es ist mehr kompliziert, dass nur à fixed-delta.
Ich denke, dass Facebook Datensätze das Datum gebe ich als PSD-Datum. Wenn ich record Donnerstag 26/10/2011 16.00 UHR (Paris Zeitzone), Facebook Einträge 26/10/2011 16.00 UHR (San Francisco Zeitzone) und wandelt es in das entsprechende Anzahl von zweiten UTC seit 1970. Das problem ist, dass diese Konvertierung berücksichtigt die Zeitumstellung in San Francisco.
Ich habe die folgenden benchmark zu demonstrieren :
- (31/12/2011 16:00 - Frankreich-Zeit) FB Timestamp = 1325376000 statt 1325343600 (Timestamp UTC) -> Delta : -32400
- (Am 31.07.2012 16:00 - Frankreich-Zeit) FB Timestamp = 1343775600 statt 1343743200 -> Delta : -32400
- (Am 03.10.2012 16:00 - Frankreich-Zeit) FB Timestamp = 1349305200 statt 1349272800 -> Delta : -32400
- (28/10/2012 08:00 - Frankreich-Zeit) FB Timestamp = 1351436400 statt 1351407600 -> Delta : -28800
- (25/03/2012 08:00 - Frankreich-Zeit) FB Timestamp = 1332687600 statt 1332655200 -> Delta : -32400
- (24/03/2012 23:30 - Frankreich-Zeit) FB Timestamp = 1332657000 statt 1332628200 -> Delta : -28800
- (27/10/2012 23:30 - Frankreich-Zeit) FB Timestamp = 1351405800 statt 1351373400 -> Delta : -32400
In der Tat, ich brauche einen Weg, um zu konvertieren 31/10/2011 16.00 UHR (PDT) bis 31/10/2011 16.00 UHR (Pariser TZ)...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim erstellen der " = SimpleDateFormat können Sie die Zeitzone. Das Datum an dem es hergestellt ist GMT+0. Sie können anzeigen in Ihrer lokalen Zeitzone durch Verwendung eines anderen " = SimpleDateFormat mit der Zeitzone. (Oder Sie verwenden konnte, JodaTime, das gleiche zu tun)
Wenn Sie müssen die Anzahl der milli-Sekunden seit 1.1.1970 in der PST-Zeitzone, die Sie tun können
Als GMT nicht die Sommerzeit-änderungen ist es eine gute Allgemeine Zeit verwenden.
Also facebook haben einen festen offset von +7 Stunden im Vergleich zu standard-Epoche? Können Sie nicht einfach subtrahieren, die saldiert, wenn Sie analysieren ein timestamp? Zum Beispiel:
Beachten Sie, dass timestamp ist in der Regel definiert als "Anzahl von (milli)Sekunden, die seit einem Referenz", und dies kann niemals die Sommerzeit. Die Anzahl der Sekunden seit 1970-01-01 00:00:00 UTC ändert sich nicht, wenn Sie bewegen Sie die Hände auf Ihre Uhr.
UPDATE: So geben Sie facebook ein Datum zu speichern, und Ihre eigentliche problem ist, dass Sie nicht geben kann, die eine korrekte Zeit-zone, also es wird gespeichert, wie alles, was Zeit ist es in San Francisco? Sie könnte konvertieren Sie die Zeit, um die "America/Los_Angeles" timezone, bevor Sie Sie lagern. Alternativ können Sie wandeln es wieder nach dem abrufen es, mit so etwas wie dies: