2009-05-25 1 views
101

Wie erhalten Sie Stunden und Minuten seit Date.getHours und Date.getMinutes wurde veraltet? Die Beispiele, die ich in der Google-Suche gefunden habe, verwendeten die veralteten Methoden.Java: getMinutes und getHours

Antwort

72

Von der Javadoc für Date.getHours

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

So

Calendar rightNow = Calendar.getInstance(); 
int hour = rightNow.get(Calendar.HOUR_OF_DAY); 

und das Äquivalent für getMinutes verwenden.

+2

So ... wie funktioniert das, wenn ich die Stunden von einem Datum zu bekommen, die bis jetzt nicht entsprechen? – Michael

+0

Siehe http://stackoverflow.com/questions/8150155/java-gethours-getminutes-and-getseconds – Mark

33

Zunächst importieren java.util.Calendar

Calendar now = Calendar.getInstance(); 
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE)); 
6

Calender Versuchen. Verwenden Sie getInstance, um ein Kalender-Objekt zu erhalten. Verwenden Sie dann setTime, um das erforderliche Datum festzulegen. Jetzt können Sie get (int-Feld) mit der entsprechenden Konstante wie HOUR_OF_DAY oder so verwenden, um die von Ihnen benötigten Werte zu lesen.

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html

2

Ich würde empfehlen, ad joda Zeit suchen.

Ich hatte Angst, eine weitere Bibliothek zu meinem dicken Projekt hinzuzufügen, aber es ist einfach und schnell und schlau und genial. Außerdem spielt es in gewisser Weise gut mit dem vorhandenen Code.

145

Verwenden Sie Joda Time anstelle von standard java.util.Date-Klassen. Joda Time-Bibliothek hat viel bessere API für die Behandlung von Daten.

DateTime dt = new DateTime(); // current time 
int month = dt.getMonth();  // gets the current month 
int hours = dt.getHourOfDay(); // gets hour of day 

diese question für Vor-und Nachteile der gesamt Joda Zeitbibliothek.

Joda Time kann auch in einer zukünftigen Version von Java als Standardkomponente enthalten sein, siehe JSR-310.


Wenn Sie traditionelle java.util.Date und java.util.Calendar Klassen verwenden müssen, überzeugen Sie Hilfe, um ihre JavaDoc des (java.util.Calendar und java.util.Date).

Sie können die traditionellen Klassen wie diese verwenden, um Felder aus der angegebenen Date-Instanz 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! 
1

Während ich würde nicht so tun empfehlen, ich denke, dass es sich lohnt, darauf hingewiesen, dass, obwohl viele Methoden auf java.util.Date veraltet sind, sie funktionieren immer noch. In trivialen Situationen kann es in Ordnung sein, sie zu verwenden. Außerdem ist java.util.Calendar ziemlich langsam, daher können getMonth und getYear on Date möglicherweise schneller sein.

0

import java.util.* Mit der Kalender- und Formatierungsklasse können Sie gethour und minute gehen. wie 10:12

28

java Calendar cal = Calendar.getInstance() und Formatter fmt=new Formatter() und ein Format für die Anzeige Stunde und Minute fmt.format("%tl:%M",cal,cal) und Druck System.out.println(fmt) Ausgabe zeigt gesetzt.Zeit

Während ich ein Fan von Joda-Time bin, stellt Java 8 das java.time Paket vor, das schließlich eine lohnende Java-Standardlösung ist! Lesen Sie diesen Artikel, Java SE 8 Date and Time, für eine gute Menge an Informationen über java.time außerhalb von Stunden und Minuten.

Insbesondere sehen Sie sich die LocalDateTime Klasse.

Stunden und Minuten:

LocalDateTime.now().getHour(); 
LocalDateTime.now().getMinute(); 
+0

Dies ist die beste Antwort. Sie können eine explizite Zeitzone angeben, um den Leser und sich selbst daran zu erinnern, dass dies eine zeitzonensensitive Operation ist: 'LocalDateTime.now (ZoneId.of (" Asia/Manilla "))'. Lesen Sie 'now()' nur einmal aus Gründen der Konsistenz (die Zeit wird zwischen den beiden Aufrufen liegen). Wenn das Datum wirklich irrelevant ist, funktioniert 'LocalTime' ebenfalls. –

1
int hr=Time.valueOf(LocalTime.now()).getHours(); 
int minutes=Time.valueOf(LocalTime.now()).getMinutes(); 

Diese Funktionen int-Werte in Stunden und Minuten zurück.

+0

Duplizieren. Dieser Ansatz wurde bereits in der [Antwort von J.D.] (http://stackoverflow.com/a/29270120/642706) behandelt. –

+0

Ist das 'java.sql.Time'? Sicherlich kein Grund, diese veraltete Klasse ins Spiel zu bringen, wenn Sie 'java.time.LocalTime' haben. Du bist überkompliziert. –

1
public static LocalTime time() { 
    LocalTime ldt = java.time.LocalTime.now(); 

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES); 
    System.out.println(ldt); 
    return ldt; 
} 

Dies funktioniert für mich

+0

Elegant. Vielleicht möchten Sie erklären, warum es funktioniert. –