Ein Problem mit der Zeit

mccae

Senfdazugeber
Hallo zusammen,

Ich bin komischerweise auf ein Problem bei der Berechnung von Zeiten gekommen.
Ich weiß nicht ob es an der späten Stunde liegt, dass mir nichts darauf einfällt, aber ich habe folgendes Problem:

Ich habe einen Timestamp aus System.currentTimeMillis().

Später hole ich mir wieder einen solchen Stamp und möchte gerne berechnen wie viele Tage, Stunden, Minuten,... usw. seitdem vergangen sind.
Doch da stoße ich auf ein Problem:

Wie darf ich System.currentTimeMillis() eigentlich interpretieren? Bis jetzt hatte ich um ehrlich zu sein noch nie darüber nachgedacht.
Was ist mit Zeitzonen und der Sommerzeit?

Sind die Ausgaben dieser Funktion auf Systemen mit verschiedenen Zeitzonen unterschiedlich?
Sind die Ausgaben bei Sommer- sowie Winterzeit unterschiedlich?

Denn wenn ich jetzt zwischen zwei aufgenommenen Werten differenziere und währenddessen ein Wechsel von oder auf die MESZ stattgefunden hat - muss ich das berücksichtigen und da Zeit abziehen oder dergleichen?
Was ist eigentlich mit Schaltsekunden?
Was ist mit Schaltjahren?

Denn ich glaube einfaches Subtrahieren und Durchdividieren der Daten ist unzureichend.

Kennt sich jemand aus?

Gruß,
 
Zuletzt bearbeitet:
Hi

currentTimeMillis liefert die Millisekunden (ungenau),
die seit 1.1.1970 00:00Uhr nach Londoner Ortszeit vergangen sind (UTC)
(nicht (mehr) exakt Greenwich, aber das ist eigentlich egal).

Wie du schon sagst gibts in der Berechnung nicht den Luxus von Zeitzonen oder gar Sommerzeit.
Dafür gibts den GregorianCalendar.


Aber: Für den angegebenen Verwendungszweck ist das eigentlich egal.
Angenommen, man hat einen Unterschied von 259200000ms (3 Tage)
Ob das 28.02 - 01.03 - 02.03 - 03.03 oder 28.02 - 29.02 - 01.03 - 02.03 war,
ist das wichtig? Es sind 3 Tage, fertig.

Wieviel-Wochen bis Wieviel-Millisekunden-sind-vergangen geht so alles ziemlich normal,
nur bei Monaten (unterschiedliche Länge) und Jahren (Schaltjahr) muss man aufpassen...
wenns benötigt wird?


Etwas noch: Alle paar Jahre gibts eine Schaltsekunde (seit Jahr 2000 waren es drei Sekunden),
die könnten da was durcheinanderbringen.
Muss es so genau sein?

Gruß
 
Hallo und danke für die Antwort.

Ich habe es nun auch gemerkt - zumindest hier ist die Ausgabe von System.currentTimeMillis() immer unabhängig von der Zeitzone des Systems - da war ich mir nicht sicher.
Somit ist eine Differenz zweier solche Werte heranzuziehen und durchzudividieren - jetzt ist es glasklar, da ich mir zuvor ja nicht sicher war. Ich brauch eindeutig mehr Koffein :D

Gruß
 
Zurück