mit Uhrzeit rechnen

Mischka

Aktives Mitglied
moin,
die lösung für mein problem ist sicher nicht besonders schwer, doch ich finde sie einfach nicht im internet.

Ich würde eine uhrzeit oder einen festen zeitpunkt einer methode übergeben und diese soll mir dann die zeit in millisekunden bis da hin berechnen.

Beispiel:
Angenommen es ist 09:00 Uhr Systemzeit (Windows XP).

Java:
int ms = getTimeInMs(int jahr = 2010, int monat = 2, int tag = 27, int h = 10, int m = 0, int s = 0);
-> ms = 3600000

oder
Java:
int ms = getTimeInMs(int jahr = 2010, int monat = 2, int tag = 28, int h = 10, int m = 0, int s = 0);
-> ms = 90000000

Sry, ich habe noch nie mit Datümern gearbeitet und ich wäre für eine Hilfe echt Dankbar.

MFG
mischka
 
die lösung für mein problem ist sicher nicht besonders schwer, doch ich finde sie einfach nicht im internet.

So trivial ist das gar nicht, wegen Sommerzeit etc.

Aber schau doch mal hier: Java Blog Buch : D) Differenz zweier Daten

Da wird auf die Problematik etwas eingegangen. Brauchst nur die Umrechnung in Tage rauszunehmen, weil Du ja Millisekunden brauchst. Viel Erfolg 🙂

Edit: Als Startzeit nimmst Du dann natürlich einfach die aktuelle Zeit... 🙂
 
Zuletzt bearbeitet:
naja, denn ganzen sommerzeit-kram brauche ich ja nicht, da ich ja nicht die echte zeit brauche, sondern nur die Differenz zwischen der Zeit meiners Computers und einer eingegebenen Zeit.

wenn dazischen eine zeitänderung stattfindet, muss mein pc das ja nicht mit einberechnen.
 
Hast du schon von Zeitstempeln gehört ?
es ist die verstrichene zeit in Sekunden seit 1970.

du kannst damit sozusagen sehr gut rechnen um Differenzen zwischen 2 Datumern zu bekommen.

Java:
long time1 = System.currentTimeMillis(); // die jetzige Zeit
java.sql.Date date1 = new java.sql.Date(time1 ); // die Zeit als datum, für spätere Anzeige 
long time2 = System.currentTimeMillis();
		   
long diff = time2 - time1; // hier kann man sehen wie viele milisekunden
// zwischen den funktionsaufrufen vergangen sind
date1.getTime(); // liefert ein long als zeitstempel in milisekunden

Dh. wenn du 2 datumer hast so wandelst sie in Timestamp mit getTime() und dann rechnest die differenz aus in milisekunden
am besten den absoluten wert wenn du nicht weisst welches datum früher und welches später liegt.

dann musst du nur wissen wie viel milisekunden haben 1 sekunde, 1minute, 1 std, 1 tag
und mit geschicktem teilen hast du die differenz
 
mir ist der unix-timestamp sehr wohl bekannt, doch habe ich gehofft, dass es in java schon fertige klassen gibt, die eine rumrechnerei überflüssig machen und ich durch ein paar erstellte objekte und übergabe von zwei Datümern eine Differenz zwischen beiden in ms bekommen könnte.

das objekt GregorianCalendar liefert mir scheinbar falsche werte zurück, aber wenn ich mich noch ein bisschen mehr reinlese, werde ich wohl zum gewünschten ergebniss kommen.

Vielen Dank für die antworten.
Problem gelöst!
 
die eine rumrechnerei überflüssig machen und ich durch ein paar erstellte objekte und übergabe von zwei Datümern eine Differenz zwischen beiden in ms bekommen könnte.

Hier mal die Rumrechnerei 😉

Java:
public static long getDateDiff(Date date1, Date date2)
{
	return date1.getTime() > date2.getTime() ? date1.getTime() - date2.getTime() :  date2.getTime() - date1.getTime(); 
}
 
Oder noch kürzer
Java:
public static long getDateDiff(Date date1, Date date2) {
    return Math.abs(date1.getTime() - date2.getTime());
}
 
ich bevorzuge die Denke "make it run, make it fast!!" - wenn der Kunde fragt hmmm, welches algorithmus is denn schneller?
er muss ja nicht verstehen was dahinter steht, wenn beide gleich funktionieren - ich vermute er nimmt das schnellere - wer will schon heutzutage warten - das haben schon viele Dank VISTA gemacht ;D
Die Erklärung kann man ja in der Javadoc über der Funktion schreiben - aber dies wird ja überbewertet.
 

Neue Themen


Zurück
Oben