2009-03-11 20 views
4

Da java.util.Date größtenteils veraltet ist, was ist der richtige Weg, um einen Zeitstempel für ein bestimmtes Datum, UTC-Zeit, zu bekommen? Die eine, die gegen System.currentTimeMillis() verglichen werden könnte.System.currentTimeMillis() für ein bestimmtes Datum?

+0

Beachten Sie: Die problematischen alten Datum-Uhrzeit-Klassen wie ['java.util.Date'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html), ['java.util.Calendar'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html) und' java.text.SimpleTextFormat' sind jetzt Legacy] (https://en.wikipedia.org/wiki/Legacy_system), ersetzt durch [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package -summary.html) Klassen. –

Antwort

10

Mit der Klasse Calendar können Sie einen Zeitstempel zu einer bestimmten Zeit in einer bestimmten Zeitzone erstellen. Sobald Sie das haben, können Sie dann den Millisekunden-Zeitstempel erhalten zu vergleichen mit:

Calendar cal = new GregorianCalendar(); 
cal.set(Calendar.DAY_OF_MONTH, 10); 
// etc... 

if (System.currentTimeMillis() < cal.getTimeInMillis()) { 
    // do your stuff 
} 

edit: geändert direktere Methode zu verwenden, um Zeit in Millisekunden von Kalender-Instanz zu erhalten. Danke Outlaw Programmer

+2

Kalender hat tatsächlich eine getTimeInMillis() -Methode, die etwas direkter ist als getTime(). GetTime(). +1 sowieso. –

1

Werfen Sie einen Blick auf die Calendar Klasse.

Sie können eine Daten mit der aktuellen Zeit (nicht veraltet) machen und dann Kalender daraus machen (es gibt auch andere Möglichkeiten).

7

Der "offizielle" Ersatz für viele Dinge, für die Datum verwendet wurde, ist Kalender. Leider ist es eher ungeschickt und überentwickelt. Ihr Problem kann wie folgt gelöst werden:

long currentMillis = System.currentTimeMillis(); 
Date date = new Date(currentMillis); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(date); 
long calendarMillis = calendar.getTimeInMillis(); 
assert currentMillis == calendarMillis; 

Kalender können auch auf unterschiedliche Weise initialisiert werden, auch ein Feld zu einer Zeit (Stunde, Minute, Sekunde, etc.). Werfen Sie einen Blick auf den Javadoc.

3

Obwohl ich es selbst nicht versucht habe, sollten Sie sich das Projekt JODA-Time (open source) ansehen, wenn Ihr Projekt externe Bibliotheken erlaubt. AFAIK, JODA Zeit hat viel zu einem neuen JSR (normalerweise in Java7) zu Datum/Uhrzeit beigetragen.

Viele Leute behaupten, JODA Zeit ist die Lösung für alle einen Versuch

Auf jeden Fall ;-) java.util.Date/Calendar Probleme wert.

+0

Ich empfehle auch, JODA-Time - aktuelle java.util.Date und Kalender sind in vielerlei Hinsicht ziemlich gebrochen (auf der JODA-Seite gibt es motivierende Geschichte darüber, warum JODA-Projekt wurde in erster Linie erstellt). –

Verwandte Themen