Java getHours (), getMinutes () und getSeconds ()

81

Wie ich weiß getHours(), getMinutes()und getSeconds()sind in Java alle veraltet und sie mit ersetzt werden Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND.

Diese geben tatsächlich die Stunde, Minute und Sekunde für diesen bestimmten Moment zurück. Ich möchte jedoch die Stunden und Minuten aus einer Datumsvariablen abrufen. Zum Beispiel,

Angenommen, die aus der Datenbank abgerufene Zeit ist

time = Thu Jan 01 09:12:18 CET 1970;

int hours = time.getHours();
int minutes = time.getMinutes();
int seconds = time.getSeconds();

Durch Abrufen der Stunden, Minuten und Sekunden erhalte ich

hours = 9
minutes = 12
seconds = 18

Wie verwende ich Kalender für diese Funktion? Das getHours()ist zwar veraltet, hat aber trotzdem funktioniert. Ich würde immer noch gerne wissen, ob es eine Alternative dazu gibt.

mel
quelle

Antworten:

179

Versuche dies:

Calendar calendar = Calendar.getInstance();
calendar.setTime(yourdate);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);

Bearbeiten:

hours, minutes, seconds

oben sind die Stunden, Minuten und Sekunden nach der Konvertierung yourdatein die Systemzeitzone angegeben!

user998692
quelle
1
Wenn Sie die Zeitzone festlegen müssen, fügen Sie TimeZone hinzu. Tz = TimeZone.getTimeZone ("UTC"); // ... init calendar calendar.setTimeZone (tz); <code>
Swaraj
33

Java 8

    System.out.println(LocalDateTime.now().getHour());       // 7
    System.out.println(LocalDateTime.now().getMinute());     // 45
    System.out.println(LocalDateTime.now().getSecond());     // 32

Kalender

System.out.println(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));  // 7 
System.out.println(Calendar.getInstance().get(Calendar.MINUTE));       // 45
System.out.println(Calendar.getInstance().get(Calendar.SECOND));       // 32

Joda Zeit

    System.out.println(new DateTime().getHourOfDay());      // 7
    System.out.println(new DateTime().getMinuteOfHour());   // 45
    System.out.println(new DateTime().getSecondOfMinute()); // 32

Formatiert

Java 8

    // 07:48:55.056
    System.out.println(ZonedDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
    // 7:48:55
    System.out.println(LocalTime.now().getHour() + ":" + LocalTime.now().getMinute() + ":" + LocalTime.now().getSecond());

    // 07:48:55
    System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));

    // 074855
    System.out.println(new SimpleDateFormat("HHmmss").format(Calendar.getInstance().getTime()));

    // 07:48:55 
    System.out.println(new Date().toString().substring(11, 20));
blueberry0xff
quelle
V nützlicher Überblick: Dies sind wahrscheinlich die heute am häufigsten verwendeten Datums- / Zeitsysteme.
Javadba
1
Aber es zeigte Stunden und Minuten im einstelligen Bereich an. Ist es möglich, zweistellig zu zeigen
Phoenix
9

Beachten Sie für einen Zeitunterschied, dass der Kalender am 01.01.1970, 01:00 Uhr und nicht um 00:00 Uhr beginnt. Wenn Sie java.util.Date und java.text.SimpleDateFormat verwenden, müssen Sie 1 Stunde kompensieren:

long start = System.currentTimeMillis();
long end = start + (1*3600 + 23*60 + 45) * 1000 + 678; // 1 h 23 min 45.678 s
Date timeDiff = new Date(end - start - 3600000); // compensate for 1h in millis
SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm:ss.SSS");
System.out.println("Duration: " + timeFormat.format(timeDiff));

Dies wird gedruckt:

Dauer: 1: 23: 45.678

user2003461
quelle
2
Beeindruckend. nur wie unmöglich Date Manipulation in Java erfolgen.
Javadba