Java getHours()、getMinutes()およびgetSeconds()


81

私が知っているようにgetHours()getMinutes()およびgetSeconds()すべてのJavaに廃止され、それらが置き換えられますCalendar.HOUR_OF_DAYCalendar.MINUTECalendar.SECOND

これらは実際、その特定の瞬間の時、分、秒を返します。ただし、Date変数から時間と分を取得したいと思います。例えば、

データベースから取得した時間は

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

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

時間、分、秒を取得することで、

hours = 9
minutes = 12
seconds = 18

では、この機能にカレンダーを使用するにはどうすればよいですか?がgetHours()非推奨されてきたが、それはまだ働いていました。これに代わるものがあるかどうかはまだ知りたいです。

回答:


179

これを試して:

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

編集:

hours, minutes, seconds

上記は、yourdateシステムタイムゾーンに変換してからの時間、分、秒になります。


1
また、タイムゾーンを設定する必要がある場合は、TimeZone tz = TimeZone.getTimeZone( "UTC");を追加します。// ... initカレンダーcalendar.setTimeZone(tz); <コード>
Swaraj 2018年

33

Java 8

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

カレンダー

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

ジョーダタイム

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

フォーマット済み

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有用な要約:これらはおそらく今日最も一般的な日付/時刻システムのセットです。
StephenBoesch 2017

1
しかし、それは一桁で時間と分を表示しました。2桁の数字を表示することは可能ですか
フェニックス

9

時差については、カレンダーは00:00ではなく01.01.1970、01:00に開始することに注意してください。java.util.Dateとjava.text.SimpleDateFormatを使用している場合は、1時間を補正する必要があります。

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

これは印刷されます:

時間:1:23:45.678


2
ワオ。ただどのように缶日付操作はJavaで行うことが不可能。
StephenBoesch 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.