getHours()
、getMinutes()
、およびgetSeconds()
はすべてJavaで非推奨になり、Calendar.HOUR_OF_DAY
、Calendar.MINUTE
、Calendar.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()
は廃止されましたが、まだ機能していました。私はまだこれに代わるものがあるかどうか知りたいです。
これを試して:
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
をシステムタイムゾーンに変換した後の時間、分、秒です!
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));
時差については、カレンダーは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