konvertiere Millisekunden in ein Utc Date Objekt

Servus Forum,

ich habe ein Problem. Ich empfange über einen WCF Service einen Utc-Zeitstempel (JSON Format) bzw. die Millisekunden des Zeitstempels.
Aus diesen Millisekunden muss ich zwingend wieder ein Date-Objekt generieren - natürlich auch in Utc.

Wenn ich über das SimpleDateFormat die Zeitzone setze, und mir den String zurückgeben lasse, erhalte ich das korrekte Ergebnis: den 31.12.1999 23:00:00.

Parse ich diesen String jetzt in ein Date-Objekt, wird wieder die lokale Zeitzone berücksichtigt. Deshalb bin ich wieder eine Stunde "in der Zukunft" bzw.
erhalte ich als Ergebnis den 01.01.2000 00:00:00

Java:
                long milli = Long.parseLong("946681200000");
				
		SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
		formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
		String strDate =  formatter.format(new Date(milli)); //31-12-1999 23:00:00
		try {
			Date date = formatter.parse(strDate); //Sat Jan 01 00:00:00 MEZ 2000
		} 
		catch (ParseException e1) {
			e1.printStackTrace();
		}

Ich könnte folgendes "tricksen":

Java:
long milli = Long.parseLong("946681200000");
int offset = TimeZone.getDefault().getRawOffset();
Date dateoffset = new Date(milli - offset);

aber ob das eine saubere Lösung ist....??

Habt Ihr noch eine Idee / Lösung?

thxx....Grüße
 
S

SlaterB

Gast
946681200000 ist immer exakt ein Date, zeitzonenunabhängig,
dies ist Datum-Worte zu fassen erfordert natürlich dann doch eine Festlegung, es ist: 01.01.2000 0:00 bei uns bzw. 31.12 1999 23:00 bei UTC,

[c]new Date(milli)[/c] ist dieses Datum, 946681200000, da hat sich noch nichts getan,
[c]strDate = formatter.format(new Date(milli));[/c] ist 31.12 1999 23:00 bei UTC, auch dieses Datum, alles in Butter,

[c]Date date = formatter.parse(strDate);[/c]
jetzt wirds spannend, was ist date? du schreibst du erhälst eine Zeit in der Zukunf, das kann ich nicht nachvollziehen,
was meist du mit 'als Ergebnis den 01.01.2000 00:00:00'? welches ja immerhin auch eine korrekte Darstellung immernoch desselben Datums ist, nur eben in einer anderen Zeitzone?

meiner Ansicht nach gibt es hier bisher kein Problem, das geparste Date date stimmt mit dem vorherigen, mit [c]new Date(milli)[/c], überein, führe equals-Vergleich durch!,
es ist immer noch 946681200000, lass dir den Long-Wert ausgeben, erneutes Formatieren würde wieder zu 31.12 1999 23:00 führen,

01.01.2000 00:00:00 kommt nur raus, wenn für die Ausgabe eine andere Zeitzone gewählt wird, etwa bei
System.out.println(date)

hast du konkrete Anhaltspunkte für die Zukunftsvision?
 
hast du konkrete Anhaltspunkte für die Zukunftsvision?

...sonst würde mein Post keinen Sinn machen.
Allerdings habe ich eines vergessen zu erwähnen - ich programmiere eine Android Applikation, sollte in diesem Fall aber keine Rolle spielen da "SimpleDateFormat" und "Date" direkt aus dem Java Framework kommen.

Beim parsen des Strings (Utc Zeitstempel) in ein Date Objekt wird die lokal eingestellte Zeitzone meines Android-Gerätes berücksichtigt.

Gerade noch einmal mit dem Emulator getestet.

Java:
Date date = formatter.parse(strDate);

Beispiel:
Java:
Date date = formatter.parse("31-12-1999 23:00:00");

Ergebnis:  (java.util.Date) Fri Dec 31 15:00:00 GMT-08:00 1999

--> weil im Android Device eine Zeitzone GMT -08:00 eingestellt ist

Mir ist nicht klar wie ich das umgehen kann bzw. das parsen des Utc Strings in ein "Utc Date-Objekt" - die lokal eingestellte Zeitzone dabei komplett ignoriert.

Deshalb "tauschen" der WCF Service und meine App die Objekte in Utc - um der Problematik von irgendwelchen "Zeitversätzen" aus dem Weg zu gehen.

thx...
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> ...sonst würde mein Post keinen Sinn machen.
genau das ist meinen Andeutungen nach der Fall ;)


> --> weil im Android Device eine Zeitzone GMT -08:00 eingestellt ist
ich sehe nach wie vor kein Problem, du bestimmst die Zeitzone des Parsers,
wenn du meinst dass "31-12-1999 23:00:00" ein Zeitpunkt in Zeitzone X ist, dann parse in Zeitzone X und die Ausgabe in einer anderen Zeitzone Y wird abweichen, ganz normal,
wenn du möchtest dass die Ausgabe danach in Zeitzone Y genau 'passt', dann parse doch gleich in Zeitzone Y?

klingt jetzt bisschen ungenau, aber das Beispiel zu Beginn und meine erste Antwort sollen glaube ich eindeutig sein,
 
> dann parse doch gleich in Zeitzone Y?

OK...das hab ich vor - deshalb setze ich ja die Zeitzone auf Utc:

Java:
 SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
 formatter.setTimeZone(TimeZone.getTimeZone("UTC"));

Das Ergebnis ist korrekt: 946681200000 = 31-12-1999 23:00:00 Utc
Java:
  String strDate =  formatter.format(new Date(946681200000)); //= 31-12-1999 23:00:00 Utc

Entweder ich stehe auf dem Schlauch.....aber jetzt zeig mir bitte wie Du daraus wieder ein Date Objekt erzeugen kannst ohne die lokale Zeitzone zu berücksichtigen. Im Date Objekt steht die lokale Zeit - abhänig von der eingestellten Zeitzone.
 
S

SlaterB

Gast
ein Date-Objekt ist wie long-Wert 946681200000 absolut Zeitzonen-unabhängig,
beschreibt unmissverständlich einen exakten Zeitpunkt in der Geschichte der Menschheit wenn man ihn zu interpretieren weiß,
kann überall auf der Welt und sogar von grünen Menschen auf Alpha Centauri exakt verwendet werden,
Missverständnisse sind unmöglich

------

die Zeitzone spielt bei Calendar eine Rolle, aber das lassen wir jetzt mal ganz außen vor, ist vorerst ja unbeteiligt,
es geht ja nur um Date vs. String,

-----

ein String wie "31-12-1999 23:00:00" ist ungenau, je nach Zeitzone ist es ein anderes Date, ein anderer long-Wert,

"31-12-1999 23:00:00 Utc" ist dagegen wieder eindeutig, da Zeitzone dabei ist, das ist dann wohl 946681200000,
während "31-12-1999 23:00:00" in unserer Zeitzone ein anderer Zeitpunkt ist, paar Stunden später oder früher

> aber jetzt zeig mir bitte wie Du daraus wieder ein Date Objekt erzeugen kannst ohne die lokale Zeitzone zu berücksichtigen

genau so wie du es im ersten Posting in Zeile 7 hast, mit dem SimpleDateFormat mit eingestellter Zeitzone parsen,
dann kommt wieder genau das gleiche raus,
wie in der ersten Antwort geschrieben schau dir den long-Wert an, vergleiche die Dates mit equals oder mache irgendwas nachvollziehbares,

-----

wenn du schreibst
> Ergebnis: (java.util.Date) Fri Dec 31 15:00:00 GMT-08:00 1999
> --> weil im Android Device eine Zeitzone GMT -08:00 eingestellt ist
dann ist das für mich einfach kein Widerspruch, denn diese Ausgabe ist ja exakt der Zeitpunkt 946681200000,

was ist dein Ziel? hast du eine nicht konfigurierbare Ausgabe, brauchst also 31-12-1999 23:00:00 in GMT?
ok, das klingt plausibel, darauf hätte ich schon eher eingehen können,

in diesem Fall sehe ich in der Tat nur die von dir schon angesprochene Lösung, das Date zu verändern, x Stunden zu addieren und abzuziehen,
denn du willst ja abweichende Zeiten anzeigen

besser wäre aber, die Darstellung selber zu KONTROLLIEREN, alles was auf dem Bildschirm zu sehen ist sind Strings,
wie Dates zu Strings werden kann man normalerweise selber bestimmen, eben mit Formatierung per SimpleDateFormat
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
amgadalghabra Die vier Sortieralgorithmen die durchschnittliche Laufzeit in Millisekunden Java Basics - Anfänger-Themen 37
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
B Date Object mit Millisekunden Ausgabe Java Basics - Anfänger-Themen 8
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
T Millisekunden-Umrechnung die 100. Java Basics - Anfänger-Themen 6
S Millisekunden in Datum/Uhrzeit wandeln Java Basics - Anfänger-Themen 11
T Von Millisekunden auf Stunden kommen Java Basics - Anfänger-Themen 2
G Millisekunden in Minuten und Sekunden umwandeln Java Basics - Anfänger-Themen 12
G Datum in Millisekunden umwandeln Java Basics - Anfänger-Themen 6
S Dauer --> Millisekunden in Year:Day:Hour:Minute:Second Java Basics - Anfänger-Themen 7
DStrohma Millisekunden umwandeln in Jahre, Monate, Tage, Stunden Java Basics - Anfänger-Themen 5
G Timstamp mit Millisekunden Java Basics - Anfänger-Themen 2
S Millisekunden umrechnen Java Basics - Anfänger-Themen 12
M millisekunden in echtes Datum umwandeln Java Basics - Anfänger-Themen 2
S long millisekunden nach Uhrzeit format Java Basics - Anfänger-Themen 5
C millisekunden bei gregoriancalendar stimmen nicht Java Basics - Anfänger-Themen 2
O errechnen von Millisekunden Java Basics - Anfänger-Themen 3
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
MiMa Date vs LocalDate/LocalDateTime Java Basics - Anfänger-Themen 13
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
M Umgang mit dem Type "Date" Java Basics - Anfänger-Themen 6
sserio Date Library Frage Java Basics - Anfänger-Themen 9
P "Datestamp" to Date oder Timestamp Java Basics - Anfänger-Themen 15
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
G convert Date to LocalDate Java Basics - Anfänger-Themen 11
G convert Optional<Date> into Optional<LocalDate> Java Basics - Anfänger-Themen 6
J Methoden toString()-Date Formatter Java Basics - Anfänger-Themen 8
L Java Date Format ändern Java Basics - Anfänger-Themen 5
B java.util.Date noch zeitgemäß? Java Basics - Anfänger-Themen 6
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
B Date - Umwandlung OffsetDateTime Java Basics - Anfänger-Themen 11
B Date Konvertierung Java Basics - Anfänger-Themen 0
B Date formatieren Java Basics - Anfänger-Themen 13
L Datentypen Date API - diese Woche bestimmen Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
Thallius Date für DatePicker formatieren aber wie? Java Basics - Anfänger-Themen 9
A Vererbungshierachie und java.util.Date Java Basics - Anfänger-Themen 31
agent47 Java 8 Locale Date Time Java Basics - Anfänger-Themen 2
S String zu Date Java Basics - Anfänger-Themen 6
L Java String to date? Java Basics - Anfänger-Themen 2
H Repräsentation von DateTime (Joda) in Java Util Date überführen Java Basics - Anfänger-Themen 3
I Date zu 01.01.<year> setzen Java Basics - Anfänger-Themen 1
H java date-time parser Java Basics - Anfänger-Themen 1
S Date parsen klappt nicht richtig Java Basics - Anfänger-Themen 3
A String to Date parsing Java Basics - Anfänger-Themen 2
M TimeUnit ms nach date convertieren Java Basics - Anfänger-Themen 2
K Best Practice Date in einem Konstruktor angeben Java Basics - Anfänger-Themen 5
K Datum und Uhrzeit als Date Objekt Java Basics - Anfänger-Themen 10
K Date cannot be cast to java.lang.Integer Java Basics - Anfänger-Themen 4
N Change date Format Java Basics - Anfänger-Themen 2
P Date oder Kalender? Was soll man verwenden? Java Basics - Anfänger-Themen 2
M Simple Date Format Java Basics - Anfänger-Themen 2
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
D Java Date/Calendar Problem Java Basics - Anfänger-Themen 4
Kenan89 Java Date List Java Basics - Anfänger-Themen 4
L Date differenz Java Basics - Anfänger-Themen 6
algebraiker TreeMap<Date,Object> navigieren? Java Basics - Anfänger-Themen 24
B Datentypen Date Java Basics - Anfänger-Themen 11
G Date - Calender | "Vergleich" Java Basics - Anfänger-Themen 3
M Mal wieder Probleme mit Date Java Basics - Anfänger-Themen 9
A Datentypen Datum mit "May" zu Date parsen Java Basics - Anfänger-Themen 6
Blindxantos Datentypen Probleme bei util.Date zu sql.Date Java Basics - Anfänger-Themen 5
R Tage subtrahieren von einem Date() Java Basics - Anfänger-Themen 6
I Date um 1 Jahr erhöhen? Java Basics - Anfänger-Themen 17
F GMT für Date Objekte festlegen Java Basics - Anfänger-Themen 5
F Sekunden abschneiden bei Date Java Basics - Anfänger-Themen 4
L int TimeZone für Date Java Basics - Anfänger-Themen 3
N alter mit Date ausrechnen Java Basics - Anfänger-Themen 10
turmaline String zu Date konvertieren -> Unparseable date Java Basics - Anfänger-Themen 5
T java.util.Date Java Basics - Anfänger-Themen 5
C Date() ->das Datum von gestern ausgeben Java Basics - Anfänger-Themen 11
M Datentypen Wie initialisiere ich ein Objekt vom Typ Date? Java Basics - Anfänger-Themen 3
H OOP java.sql.Date does not have a no-arg default constructor Java Basics - Anfänger-Themen 2
L Date subtrahieren? Java Basics - Anfänger-Themen 10
G Date von heute mit Uhrzeit erzeugen Java Basics - Anfänger-Themen 9
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
I Null - Wert bei Date (Mysql) Java Basics - Anfänger-Themen 2
H Date-Objekt um einen Monat "erhöhen" Java Basics - Anfänger-Themen 7
A The method getYear() from the type Date is deprecated Java Basics - Anfänger-Themen 6
P Datum: String in Date umwandeln Java Basics - Anfänger-Themen 7
T mit Typen Date rechnen Java Basics - Anfänger-Themen 6
F java.sql.Date Differenz Java Basics - Anfänger-Themen 3
P Date geht auf UNIX 1 Stunde nach Java Basics - Anfänger-Themen 14
M Date-Problem Java Basics - Anfänger-Themen 3
H Einfaches Date-parse problem Java Basics - Anfänger-Themen 2
Developer_X Date Java Basics - Anfänger-Themen 4
Antoras Daten aus Date lesen Java Basics - Anfänger-Themen 3
G String in Date konvertieren Java Basics - Anfänger-Themen 6
W 2 Date()-Daten vergleichen Java Basics - Anfänger-Themen 6
W String in Date Java Basics - Anfänger-Themen 4
G SpinnerDateModel stard & end nur Date? Java Basics - Anfänger-Themen 4
H Date-Object "um eins erhöhen! Java Basics - Anfänger-Themen 4
G Anfänger: Problem mit Date Java Basics - Anfänger-Themen 3
S NullPointerException bei Date.setTime() Java Basics - Anfänger-Themen 3
M 2 Date()-Datum´s vergleichen Java Basics - Anfänger-Themen 9
C Java 7 Date Java Basics - Anfänger-Themen 9
L Timer und Date Java Basics - Anfänger-Themen 2
G SQL Date zu JAVA Date Java Basics - Anfänger-Themen 4
G String in Date casten. Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben