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?
Antwort
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
Kalender hat tatsächlich eine getTimeInMillis() -Methode, die etwas direkter ist als getTime(). GetTime(). +1 sowieso. –
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).
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.
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.
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). –
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. –