Zeitberechnungen wieviel Zeit vergangen ist.

Status
Nicht offen für weitere Antworten.

Centaurus

Mitglied
Hallo Leute

ich experimentiere gerade mit dem Datum in Java 1.4.
Ich habe 2 Calender Objekte erzeugt und möchte die Zeit ausgeben die zwischen den beiden Zeiten vergangen ist. Ungefähr so...
"Es sind 23 Jahre, 6 Monat, 12 Tage, 7 Std, 3 Min und 54 Sekunden vergangen"

Ich dachte ich hole mir die Differenz der beiden Calender-Objekte in Millisekunden und rechne die dann um.

Es scheint so das die Umrechnerei bei den Variablen von der Sekunde, Minute, Std bis zum Tag funktioniert. Doch plötzlich ab dem Monat durcheinander kommt.

Beim Monat erzeugt er mir Minus Werte und das Jahr haut auch nicht hin.

Was für einen Grund kann das haben? Bin für jede Anregung dankbar.

Bei diesem Code...


long GebInMs = calGeburtstag.getTimeInMillis();
long HeuteInMs = calHeute.getTimeInMillis();
long DeltaInMs = HeuteInMs - GebInMs;
long sek = DeltaInMs / 1000;
long min = DeltaInMs / (1000*60);
long std = DeltaInMs / (1000*60*60);
long tag = DeltaInMs / (1000*60*60*24);
long woc = DeltaInMs / (1000*60*60*24*7);
long mon = DeltaInMs / (1000*60*60*24*30);
long jahr = DeltaInMs / (1000*60*60*24*365);


System.out.println("Weitere Informationen zu den Calenderwerten: \n "
+ "Calender-Objekte ...: " + calGeburtstag + "\n"
+ "Jahr................: " + calGeburtstag.get(Calendar.YEAR) + "\n"
+ "Geburtstag in ms....: " + GebInMs + "\n"
+ "Heute in ms ........: " + HeuteInMs + "\n"
+ "Differenz in ms ....: " + DeltaInMs + "\n"
+ "sek.................: " + sek + "\n"
+ "min.................: " + min + "\n"
+ "std.................: " + std + "\n"
+ "tag.................: " + tag + "\n"
+ "woc.................: " + woc + "\n"
+ "mon.................: " + mon + "\n"
+ "jahr.................: " + jahr + "\n\n"
);



haben die Variablen diese Werte:

Geburtstag in ms....: 1158872131718
Heute in ms ........: 1193057191718
Differenz in ms ....: 34185060000
sek.................: 34185060
min.................: 569751
std.................: 9495
tag.................: 395
woc.................: 56
mon.................: -20 <-- Seltsam
jahr.................: 23 <-- Auch seltsam sollte eigentlich 1 sein.



Viele Grüße

Andy
 
G

Guest

Gast
Hallo,

das Problem liegt in deiner Rechnung und Java's Vorgehensweise bei der Interpretation von Zahlen.

1000*60*60*24*30 = 2592000000 > 2147483647

2147483647 ist die obere Grenze von Integerzahlen. Alles was darüber geht, wird im negativen Bereich fortgesetzt. Deswegen ergibt in Java:

1000*60*60*24*30 = -1702967296

Dafür gibt es einige Lösungen:

1. dem Java Compiler sagen, dass man Long benutzen will:
1000L*60*60*24*30 (erkennbar durch ein L)
Eine Zahl als Long deklarieren reicht dabei schon aus.

2. Deine Rechnung umstellen und Gleitkommazahlen (um die Fortpflanzung von Rundungsfehlern zu minimieren) benutzen:
Code:
double sek = DeltaInMs / 1000;
double min = sek / 60;
double std = min / 60;
double tag = std / 24;
double woc = tag / 7;
double mon = tag / 30;
double jahr = tag / 365;
 

Empured

Mitglied
Mhhh... wie ich mir gedacht habe: Wenn ich das so kopiere kommt beim Einfügen
der Werte für die beiden oberen Variablen GebInMs und HeuteInMs "The literal 1193057191718 of type int is out of range". Ich kenn mich echt nicht grossartig aus, aber so sollte es doch klappen?


Code:
	public static void main(String[] args) {
		double GebInMs = 1.158872131718e12;
		double HeuteInMs = 1.193057191718e12; 
		double DeltaInMs = HeuteInMs - GebInMs; 
		double sek = DeltaInMs / 1000; 
		double min = DeltaInMs / (1000*60); 
		double std = DeltaInMs / (1000*60*60); 
		double tag = DeltaInMs / (1000*60*60*24); 
		double woc = DeltaInMs / (1000*60*60*24*7); 
		double mon = DeltaInMs / (1000*60*60*24*30); 
		double jahr = DeltaInMs / (1000*60*60*24*365);
 
G

Guest

Gast
Wie wäre es, wenn du es anstatt als Integer als Double angibst?
Entweder durch einen Punkt am Ende oder ein D.

Code:
double GebInMs = 1158872131718.;
double HeuteInMs = 1193057191718D;
double DeltaInMs = HeuteInMs - GebInMs; 
double sek = DeltaInMs / 1000;
double min = sek / 60;
double std = min / 60;
double tag = std / 24;
double woc = tag / 7;
double mon = tag / 30;
double jahr = tag / 365;
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
T Wieviel Array-Elemente Java Basics - Anfänger-Themen 19
L Wieviel Speicher braucht ein Pixel? Java Basics - Anfänger-Themen 14
M Aus wieviel Klassen darf in Java eine (Programm)besitzen? Java Basics - Anfänger-Themen 21
L Wieviel Platz belegt Java standardmäßig im Arbeitsspeicher? Java Basics - Anfänger-Themen 4
A wieviel platz ist noch frei? Java Basics - Anfänger-Themen 2
G Wieviel Speicher verbraucht ein Array? Java Basics - Anfänger-Themen 7
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
S Wie Rechne ich die Zeit in ...L um? Java Basics - Anfänger-Themen 15
I Zahl aufrunden (Zeit) Java Basics - Anfänger-Themen 43
H Primzahlen finden - Zeit optimieren Java Basics - Anfänger-Themen 34
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
I Nächstmögliche Zeit erhalten Java Basics - Anfänger-Themen 11
hello_autumn Zeit messen von ausgeführten Tools. Java Basics - Anfänger-Themen 1
B Nächster möglicher Tag bekommen / Nächste mögliche Zeit bekommen Java Basics - Anfänger-Themen 24
Y Warum aktualisiert die Zeit nicht? Java Basics - Anfänger-Themen 4
J Aktuelle Zeit in einer JavaFX Anwendung aktualisieren lassen Java Basics - Anfänger-Themen 4
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
F actionPerformed() zur richtigen Zeit Java Basics - Anfänger-Themen 6
T Erste Schritte Schreiben Sie eine Klasse Zeit, die eine Zeitdauer in Minuten beschreibt. Die Anzahl Minuten verwalt Java Basics - Anfänger-Themen 3
F Zeit in Milli bis Mitternacht Java Basics - Anfänger-Themen 20
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
N Server Zeit zur lokalen Zeit setzen. Java Basics - Anfänger-Themen 0
K Eine bestimmte Zeit, eine Schleife laufen lassen. Java Basics - Anfänger-Themen 4
N Zeit berechnen, die für eine Strecke benötigt wird Java Basics - Anfänger-Themen 3
S Threads Zu bestimmer Zeit Screenshot erstellen. Java Basics - Anfänger-Themen 2
M Zahlen verändern nach Zeit Java Basics - Anfänger-Themen 6
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
H Methoden Stopwatch misst Zeit einer Methode nicht Java Basics - Anfänger-Themen 8
K Zeit auslesen von Timeserver einen Tag daneben Java Basics - Anfänger-Themen 11
S Zeit messe? Java Basics - Anfänger-Themen 8
L Zeit sekündlich aktualisieren Java Basics - Anfänger-Themen 7
S Zeit bestimmen Java Basics - Anfänger-Themen 4
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
J Aufgabe: Zeit in Sekunden Java Basics - Anfänger-Themen 9
F Einfache Klassen für Datum und Zeit Java Basics - Anfänger-Themen 3
K Zeit ablaufen lassen und nach Ablauf beenden Java Basics - Anfänger-Themen 5
M Zeit von microsekunden auf Format mm:ss Java Basics - Anfänger-Themen 13
G Methoden Zeit Umrechnungsfaktor Java Basics - Anfänger-Themen 2
M Reaktion auf bestimmte Zeit Java Basics - Anfänger-Themen 2
S Animation nach bestimmter Zeit ausführen Java Basics - Anfänger-Themen 3
F hat jmd Zeit mir bisschen zu helfen msn/skype Java Basics - Anfänger-Themen 10
R Kalender speichert keine Zeit Java Basics - Anfänger-Themen 2
F Zeit per Array "zurückdrehen" Java Basics - Anfänger-Themen 5
R Zeit kommt mir zu lange vor... Java Basics - Anfänger-Themen 7
C Ereignis nach einer gewissen Zeit Java Basics - Anfänger-Themen 10
C Falsche Zeit Java Basics - Anfänger-Themen 2
A Unix-Zeit verkürzen Java Basics - Anfänger-Themen 2
Z JScrollPane zeigt Zeit als Datum Java Basics - Anfänger-Themen 5
H Programm zu bestimmten Zeit ausführen Java Basics - Anfänger-Themen 3
R Stoppuhr: Zeit ermitteln und übergeben - Variable static?? Java Basics - Anfänger-Themen 6
G Umrechnung Zeit/Temperatur Java Basics - Anfänger-Themen 6
Luk10 Zeit-Aspekt in Java Java Basics - Anfänger-Themen 3
N zeit ausgeben Java Basics - Anfänger-Themen 5
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
S Dynamisch Zeit auslesen Java Basics - Anfänger-Themen 11
X Fibonacci mit durchschnittlicher Zeit Java Basics - Anfänger-Themen 5
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
M Zeitdauer-Klasse (zeit in java) Java Basics - Anfänger-Themen 9
1 Zeit und Datum der Letzten Bearbeitung einer Datei auslesen Java Basics - Anfänger-Themen 3
L Zeit stoppen in mehreren Threads Java Basics - Anfänger-Themen 2
B JFrame nur eine gewisse Zeit anzeigen Java Basics - Anfänger-Themen 3
R Zeit eingeben über Formular Java Basics - Anfänger-Themen 3
D Kann man die Bios Zeit auslesen? Java Basics - Anfänger-Themen 5
G Zeit-Funktion Java Basics - Anfänger-Themen 4
D Zeit Problem! Java Basics - Anfänger-Themen 8
M Zeit zurückgeben je sekunde Java Basics - Anfänger-Themen 8
F Zeit stoppen Java Basics - Anfänger-Themen 6
J System Zeit Java Basics - Anfänger-Themen 3
D Zeit messen Java Basics - Anfänger-Themen 7
M Faktor Zeit in Java! Gibt es sowas? Java Basics - Anfänger-Themen 6
H Reaktion nach gewisser Zeit Java Basics - Anfänger-Themen 20
S Zeit berechnen Java Basics - Anfänger-Themen 6
C Zeit horchen! Java Basics - Anfänger-Themen 3
G Programm soll nach bestimmter Zeit etwas tun Java Basics - Anfänger-Themen 24
P Zeit - Thread bei Simulationen Java Basics - Anfänger-Themen 4
H TicTacToe: Zeit zwischen Zügen lassen Java Basics - Anfänger-Themen 9
C Zeit Schleife Java Basics - Anfänger-Themen 5
S Zeit messen! Java Basics - Anfänger-Themen 12
S CPU Zeit Java Basics - Anfänger-Themen 8
P Aktuelles Datum/Zeit in GMT? Java Basics - Anfänger-Themen 2
E Zeit runterlaufen lassen Java Basics - Anfänger-Themen 2
G Zeit auslesen in bestimmtem Format Java Basics - Anfänger-Themen 2
D String in Zeit umwandeln? Java Basics - Anfänger-Themen 3
G zeit subtrahieren Java Basics - Anfänger-Themen 6
E Nach einer gewissen Zeit wiederholen Java Basics - Anfänger-Themen 13
TRunKX Probleme mit der Zeit (Stunden Sekunden) Java Basics - Anfänger-Themen 7
W Zeit Variablen? Java Basics - Anfänger-Themen 6
S GregorianCalendar - Vergangene Zeit Java Basics - Anfänger-Themen 17
G Auf eine Uhrzeit xx Minuten addieren u. mit Akt. Zeit vergl. Java Basics - Anfänger-Themen 5
G Zeit im 24 Stundenrhythmus Java Basics - Anfänger-Themen 3
G Methode nach bestimmter Zeit aufrufen Java Basics - Anfänger-Themen 3
H GregorianCalendar Zeit abziehen (Countup) Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben