java.time.LocalTime
の利用サンプルです。
サンプルコードで試したのは以下の通りです。
現在時刻の取得
■API
LocalTime#now
■サンプル
LocalTime time1 = LocalTime.now();
System.out.println("time1 : " + time1);
■実行結果
time1 : 10:30:13.779
特定の時刻を指定してインスタンス生成
■API
LocalTime#of
■サンプル
// 時・分を指定(23時59分) LocalTime time2 = LocalTime.of(23, 59); System.out.println("time2 : " + time2); // 時・分・秒を指定(0時1分2秒) LocalTime time3 = LocalTime.of(0, 1, 2); System.out.println("time3 : " + time3); // 時・分・秒・ナノ秒指定(23時59分59秒10ナノ秒) LocalTime time4 = LocalTime.of(23, 59, 59, 59); System.out.println("time4 : " + time4);
■実行結果
time2 : 23:59 time3 : 00:01:02 time4 : 23:59:59.000000059
時・分・秒の個別取得
■API
LocalTime#getHour
LocalTime#getMinute
LocalTime#getSecond
LocalTime#getNano
■サンプル
// 12時30分20秒を生成 LocalTime time5 = LocalTime.of(12, 30, 20); System.out.println("time5 : "); // 時・分・秒・ナノ秒を個別に取り出す System.out.println(" 時:" + time5.getHour()); System.out.println(" 分:" + time5.getMinute()); System.out.println(" 秒:" + time5.getSecond()); System.out.println(" ナノ秒:" + time5.getNano());
■実行結果
time5 : 時:12 分:30 秒:20 ナノ秒:0
加減算
■API
LocalTime#plusSeconds
LocalTime#plusMinutes
LocalTime#plusHours
LocalTime#minusSeconds
LocalTime#minusMinutes
LocalTime#minusHours
LocalTime#plus(Duration)
LocalTime#minus(Duration)
■サンプル
// 秒・分・時間を加減算してみる LocalTime time6 = LocalTime.of(12, 30, 20); System.out.println(time6 + "の10秒後: " + time6.plusSeconds(10)); System.out.println(time6 + "の30分後: " + time6.plusMinutes(30)); System.out.println(time6 + "の1時間後: " + time6.plusHours(1)); System.out.println(time6 + "の30秒前: " + time5.minusSeconds(30)); System.out.println(time6 + "の3分前: " + time5.minusMinutes(3)); System.out.println(time6 + "の13時間前: " + time5.minusHours(13)); LocalTime time7 = LocalTime.of(11, 22, 33); // 7分間を加算・減算してみる System.out.println(time7 + "の7分後: " + time7.plus(Duration.ofMinutes(7))); System.out.println(time7 + "の7分前: " + time7.minus(Duration.ofMinutes(7)));
実行結果
12:30:20の10秒後: 12:30:30 12:30:20の30分後: 13:00:20 12:30:20の1時間後: 13:30:20 12:30:20の30秒前: 12:29:50 12:30:20の3分前: 12:27:20 12:30:20の13時間前: 23:30:20 11:22:33の7分後: 11:29:33 11:22:33の7分前: 11:15:33
文字列からのparse
■API
LocalTime#parse
■サンプル
// 時刻文字列からparseしてみる LocalTime time8 = LocalTime.parse("12:34:56", DateTimeFormatter.ofPattern("HH:mm:ss")); System.out.println("time8 : " + time8);
■実行結果
time8 : 12:34:56
不正な時刻の生成
■サンプル
// 存在しない23時61分0秒とか指定するとDateTimeExceptionがスローされる try { LocalTime.of(23, 61, 0); } catch (DateTimeException e) { e.printStackTrace(); }
■実行結果
java.time.DateTimeException: Invalid value for MinuteOfHour (valid values 0 - 59): 61 at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311) at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:703) at java.time.LocalTime.of(LocalTime.java:321) at sample.java8.Java8LocalTimeClient.main(Java8LocalTimeClient.java:59)
試したソースコードの全体は以下です。
import java.time.DateTimeException; import java.time.Duration; import java.time.LocalTime; import java.time.format.DateTimeFormatter; public class Java8LocalTimeClient { public static void main(String[] args) { // 現在時刻 LocalTime time1 = LocalTime.now(); System.out.println("time1 : " + time1); // 時・分を指定(23時59分) LocalTime time2 = LocalTime.of(23, 59); System.out.println("time2 : " + time2); // 時・分・秒を指定(0時1分2秒) LocalTime time3 = LocalTime.of(0, 1, 2); System.out.println("time3 : " + time3); // 時・分・秒・ナノ秒指定(23時59分59秒10ナノ秒) LocalTime time4 = LocalTime.of(23, 59, 59, 59); System.out.println("time4 : " + time4); // 12時30分20秒を生成 LocalTime time5 = LocalTime.of(12, 30, 20); System.out.println("time5 : "); // 時・分・秒・ナノ秒を個別に取り出す System.out.println(" 時:" + time5.getHour()); System.out.println(" 分:" + time5.getMinute()); System.out.println(" 秒:" + time5.getSecond()); System.out.println(" ナノ秒:" + time5.getNano()); // 秒・分・時間を加減算してみる LocalTime time6 = LocalTime.of(12, 30, 20); System.out.println(time6 + "の10秒後: " + time6.plusSeconds(10)); System.out.println(time6 + "の30分後: " + time6.plusMinutes(30)); System.out.println(time6 + "の1時間後: " + time6.plusHours(1)); System.out.println(time6 + "の30秒前: " + time5.minusSeconds(30)); System.out.println(time6 + "の3分前: " + time5.minusMinutes(3)); System.out.println(time6 + "の13時間前: " + time5.minusHours(13)); LocalTime time7 = LocalTime.of(11, 22, 33); // 7分間を加算・減算してみる System.out.println(time7 + "の7分後: " + time7.plus(Duration.ofMinutes(7))); System.out.println(time7 + "の7分前: " + time7.minus(Duration.ofMinutes(7))); // 時刻文字列からparseしてみる LocalTime time8 = LocalTime.parse("12:34:56", DateTimeFormatter.ofPattern("HH:mm:ss")); System.out.println("time8 : " + time8); System.out.println("###"); // 存在しない23時61分0秒とか指定するとDateTimeExceptionがスローされる try { LocalTime.of(23, 61, 0); } catch (DateTimeException e) { e.printStackTrace(); } } }