2008-09-26 10 views
5

Was ist ein effizienter Weg, um eine bestimmte Zeit für den nächsten Tag in Java zu bekommen? Nehmen wir an, ich möchte die lange für morgen 03:30:00. Einstellung Kalenderfelder und Datumsformatierung sind offensichtlich. Bessere oder schlauere Ideen, vielen Dank für das Teilen!Holen Sie sich die Zeit von morgen xx: xx

Okami

Antwort

14

ich die Brute-Force-Ansatz

// make it now 
Calendar dateCal = Calendar.getInstance(); 
// make it tomorrow 
dateCal.add(Calendar.DAY_OF_YEAR, 1); 
// Now set it to the time you want 
dateCal.set(Calendar.HOUR_OF_DAY, hours); 
dateCal.set(Calendar.MINUTE, minutes); 
dateCal.set(Calendar.SECOND, seconds); 
dateCal.set(Calendar.MILLISECOND, 0); 
return dateCal.getTime(); 
+1

dateCal.setTime (new Date()) ist redundant Calendar.getInstance() gibt einen Kalender zurück das ist "basiert o n die aktuelle Zeit in der Standardzeitzone mit dem Standardgebietsschema ". –

+0

Danke, ich vermisse etwas die Add-Methode! – Okami

2

Ich bin gespannt, was andere Leute über diese zu sagen haben zu hören. Meine eigene Erfahrung ist, dass das Nehmen von Abkürzungen (d. H. "Bessere oder intelligentere Ideen") mit Date s fast immer Sie in Schwierigkeiten bringt. Heck, nur mit java.util.Date wird nach Ärger gefragt.

Hinzugefügt: Viele haben Joda Time in anderen datumsbezogene Themen empfohlen.

+0

Geist geben einige Beispiele dafür, warum es wird Sie in Schwierigkeiten. – Anton

+0

Shortcuts fast immer die Auswirkungen der Zeitzone ignorieren, die Sommerzeit, Schaltjahr, zweite Sprung, usw. Zum Beispiel, die gleiche Zeit wie heute morgen ist nicht unbedingt jetzt + 86400 Sekunden –

+0

Außerdem werde ich hinzufügen, dass Fehler in Bezug auf die Auswirkungen von TZ, DST, etc. sind die schändlichen Arten von Bugs, die leicht zu gleiten sind Nach der QA-Abteilung, bedenken Sie, wie in der Welt java.util.Date es in Java 1.0 mit all seinen TZ-Problemen geschafft hat .. –

0

Ich würde in Betracht ziehen, die vordefinierte API die clevere Möglichkeit, dies zu tun.

0

Nicht sicher, warum Sie nicht nur das Kalenderobjekt verwenden würden? Es ist einfach und wartbar. Ich bin damit einverstanden, dass ich Date nicht verwende, so ziemlich alles, was dazu nützlich ist, ist jetzt veraltet. :(

Verwandte Themen