Java getHours (), getMinutes () ve getSeconds ()


81

Bildiğim kadarıyla getHours(), getMinutes()ve getSeconds()tüm Java kaldırıldığını ve bunlar değiştirilir Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND.

Bunlar aslında o an için saati, dakikayı ve saniyeyi döndürecektir. Ancak, bir Date değişkeninden saatleri ve dakikaları almak isterdim. Örneğin,

veritabanından alınan zamanın

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

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

Saatleri, dakikaları ve saniyeleri alarak

hours = 9
minutes = 12
seconds = 18

Peki bu işlev için Takvimi nasıl kullanırım? Kullanımdan getHours()kaldırılmış olmasına rağmen, yine de çalıştı. Buna bir alternatif olup olmadığını hala bilmek isterim.

Yanıtlar:


179

Bunu dene:

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);

Düzenle:

hours, minutes, seconds

Yukarıdaki yourdateSistem Zaman Dilimine dönüştürüldükten sonraki saatler, dakikalar ve saniyeler olacaktır!


1
Ayrıca, saat dilimini ayarlamanız gerekiyorsa, TimeZone tz = TimeZone.getTimeZone ("UTC") ekleyin; // ... 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

Takvim

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 Saati

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

Biçimlendirilmiş

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));

V yararlı özet: Bunlar muhtemelen günümüzün en yaygın tarih / saat sistemleri kümeleridir.
StephenBoesch

1
Ancak, saat ve dakikaları tek haneli olarak gösteriyordu. İki haneli gösterme mümkün mü
Phoenix

9

Saat farkı için, takvimin 00: 00'da değil 01.01.1970 01: 00'da başladığını unutmayın. Java.util.Date ve java.text.SimpleDateFormat kullanıyorsanız, 1 saat için telafi etmeniz gerekir:

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));

Bu yazdıracak:

Süre: 1: 23: 45.678


2
vay. Sadece nasıl imkansız kutu tarih işleme java yapılacaktır.
StephenBoesch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.