Wie bekommt man Stunden und Minuten seitdem Date.getHours
und Date.getMinutes
wurde veraltet? Die Beispiele, die ich in der Google-Suche gefunden habe, verwendeten die veralteten Methoden.
Wie bekommt man Stunden und Minuten seitdem Date.getHours
und Date.getMinutes
wurde veraltet? Die Beispiele, die ich in der Google-Suche gefunden habe, verwendeten die veralteten Methoden.
Antworten:
Versuchen Sie, Joda Time anstelle der Standardklassen java.util.Date zu verwenden. Die Joda Time-Bibliothek bietet eine viel bessere API für die Verarbeitung von Daten.
DateTime dt = new DateTime(); // current time
int month = dt.getMonth(); // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day
In dieser Frage finden Sie Vor- und Nachteile der Verwendung der Joda Time-Bibliothek.
Joda Time kann auch in einer zukünftigen Version von Java als Standardkomponente enthalten sein, siehe JSR-310 .
Wenn Sie die traditionellen Klassen java.util.Date und java.util.Calendar verwenden müssen, finden Sie Hilfe in den JavaDocs ( java.util.Calendar und java.util.Date ).
Sie können die traditionellen Klassen wie diese verwenden, um Felder von einer bestimmten Datumsinstanz abzurufen.
Date date = new Date(); // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR); // gets hour in 12h format
calendar.get(Calendar.MONTH); // gets month number, NOTE this is zero based!
Aus dem Javadoc für Date.getHours
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)
Also benutze
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
und das Äquivalent für getMinutes.
ZonedDateTime
stattdessen.
Während ich ein Fan von Joda-Time bin , stellt Java 8 das Paket java.time vor , das endlich eine lohnende Java-Standardlösung ist! In diesem Artikel, Java SE 8 Datum und Uhrzeit , finden Sie zahlreiche Informationen zu java.time außerhalb von Stunden und Minuten.
Schauen Sie sich insbesondere die LocalDateTime
Klasse an.
Stunden und Minuten:
LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();
LocalDateTime.now(ZoneId.of("Asia/Manilla"))
. Aus now()
Konsistenzgründen nur einmal lesen (zwischen den beiden Aufrufen vergeht die Zeit). Wenn das Datum wirklich irrelevant ist, LocalTime
funktioniert es auch.
ZonedDateTime
lieber Klasse als LocalDateTime
. Mit LocalDateTime
verwerfen Sie wertvolle Zeitzoneninformationen ohne Grund, ohne dass etwas gewonnen wird.
ZonedDateTime.now().getHour()
… oder …
LocalTime.now().getHour()
ZonedDateTime
Die Antwort von JD ist gut, aber nicht optimal. Diese Antwort verwendet die LocalDateTime
Klasse. Ohne ein Konzept der Zeitzone oder des Versatzes von UTC kann diese Klasse keinen Moment darstellen.
Besser zu benutzen ZonedDateTime
.
ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
Wenn Sie das ZoneId
Argument weglassen , wird eines zur Laufzeit implizit unter Verwendung der aktuellen Standardzeitzone der JVM angewendet.
Also das:
ZonedDateTime.now()
… Ist das gleiche wie das:
ZonedDateTime.now( ZoneId.systemDefault() )
Besser explizit sein und die gewünschte / erwartete Zeitzone überschreiten. Die Standardeinstellung kann sich jederzeit zur Laufzeit ändern .
Wenn kritisch, bestätigen Sie die Zeitzone mit dem Benutzer.
Befragen Sie die ZonedDateTime
für die Stunde und Minute.
int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;
LocalTime
Wenn Sie nur die Tageszeit ohne Zeitzone wünschen, extrahieren Sie LocalTime
.
LocalTime lt = zdt.toLocalTime() ;
Oder ZonedDateTime
ganz überspringen und direkt zu gehen LocalTime
.
LocalTime lt = LocalTime.now( z ) ; // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date
, Calendar
, & SimpleDateFormat
.
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Sie können java.time- Objekte direkt mit Ihrer Datenbank austauschen . Verwenden Sie einen JDBC-Treiber, der mit JDBC 4.2 oder höher kompatibel ist . Keine Notwendigkeit für Zeichenfolgen, keine Notwendigkeit für java.sql.*
Klassen.
Woher bekomme ich die java.time-Klassen?
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval
, YearWeek
, YearQuarter
, und mehr .
Versuchen Sie es mit Kalender. Verwenden Sie getInstance, um ein Kalenderobjekt zu erhalten. Verwenden Sie dann setTime, um das gewünschte Datum festzulegen. Jetzt können Sie get (int field) mit der entsprechenden Konstante wie HOUR_OF_DAY oder so verwenden, um die benötigten Werte zu lesen.
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();
Diese Funktionen geben int-Werte in Stunden und Minuten zurück.
java.sql.Time
? Sicherlich überhaupt kein Grund, diese veraltete Klasse ins Spiel zu bringen, wenn Sie haben java.time.LocalTime
. Du bist zu kompliziert.
getMinutes()
veraltet in (ich benutze Java 1.8) und wurde durchCalendar.get(Calendar.MINUTE)
Eine weitere Möglichkeit, Minuten und Stunden abzurufen, ist die Verwendung von SimpleDateFormat.
SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())
SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())
java.util.Date
, java.util.Calendar
und java.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle .
Ich würde empfehlen, ad joda Zeit zu suchen. http://www.joda.org/joda-time/
Ich hatte Angst, meinem dicken Projekt eine weitere Bibliothek hinzuzufügen, aber es ist einfach und schnell und intelligent und großartig. Außerdem spielt es sich in gewissem Maße gut mit vorhandenem Code.
Ich würde dies zwar nicht empfehlen, aber ich denke, es ist erwähnenswert, dass viele Methoden in java.util.Date zwar veraltet sind, aber dennoch funktionieren. In trivialen Situationen kann es in Ordnung sein, sie zu verwenden. Außerdem ist java.util.Calendar ziemlich langsam, sodass getMonth und getYear on Date möglicherweise schneller sind.
import java.util.*
Sie können Stunden und Minuten mit Kalender- und Formatierungsklassen abrufen. Calendar cal = Calendar.getInstance()
und Formatter fmt=new Formatter()
und stellen Sie ein Format für die Anzeige von Stunde und Minute ein fmt.format("%tl:%M",cal,cal)
und drucken Sie die System.out.println(fmt)
Ausgabenshows wie10:12
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle .