広告

Java : LocalTime (時刻・タイムゾーンなし) - API使用例

LocalTime (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。


概要

ISO-8601暦体系における、タイムゾーンのない時間(10:15:30など)。

クラス構成

LocalTime は時刻 (ナノ秒) を表すクラスです。
タイムゾーン情報は持ちません。

インスタンスの生成には of メソッドを使います。

final var time = LocalTime.of(13, 30, 15, 123000000);
System.out.println(time); // 13:30:15.123

System.out.println(time.getHour()); // 13
System.out.println(time.getMinute()); // 30
System.out.println(time.getSecond()); // 15
System.out.println(time.getNano()); // 123000000

似た API としては OffsetTime があります。
OffsetTime は、時刻とオフセット (ZoneOffset) を持ちます。

関連記事:日付・時刻の基本


フィールド

static final LocalTime MAX

サポートされている最大のLocalTimeである「23:59:59.999999999」。

System.out.println(LocalTime.MAX); // 23:59:59.999999999
System.out.println(LocalTime.MAX.getHour()); // 23
System.out.println(LocalTime.MAX.getMinute()); // 59
System.out.println(LocalTime.MAX.getSecond()); // 59
System.out.println(LocalTime.MAX.getNano()); // 999999999

static final LocalTime MIDNIGHT

その日の開始時の深夜零時の時間である「00:00」。

System.out.println(LocalTime.MIDNIGHT); // 00:00

static final LocalTime MIN

サポートされている最小のLocalTimeである「00:00」。

System.out.println(LocalTime.MIN); // 00:00
System.out.println(LocalTime.MIN.getHour()); // 0
System.out.println(LocalTime.MIN.getMinute()); // 0
System.out.println(LocalTime.MIN.getSecond()); // 0
System.out.println(LocalTime.MIN.getNano()); // 0

static final LocalTime NOON

その日の午後零時の時間である「12:00」。

System.out.println(LocalTime.NOON); // 12:00

メソッド

Temporal adjustInto (Temporal temporal)

指定された時間的オブジェクトを、このオブジェクトと同じ時間を持つように調整します。

final var temporal = LocalDateTime.of(2021, 4, 12, 12, 30);
System.out.println(temporal); // 2021-04-12T12:30

final var time = LocalTime.of(13, 10, 20);
System.out.println(time); // 13:10:20

final var result = time.adjustInto(temporal);
System.out.println(result); // 2021-04-12T13:10:20
final var temporal = ZonedDateTime.of(2021, 4, 12, 12, 30, 10, 0, ZoneId.systemDefault());
System.out.println(temporal); // 2021-04-12T12:30:10+09:00[Asia/Tokyo]

final var time = LocalTime.of(23, 50, 45, 123456);
System.out.println(time); // 23:50:45.000123456

final var result = time.adjustInto(temporal);
System.out.println(result); // 2021-04-12T23:50:45.000123456+09:00[Asia/Tokyo]

LocalDateTime atDate (LocalDate date)

この時間を日付と組み合せてLocalDateTimeを作成します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

System.out.println(time.atDate(LocalDate.of(2021, 4, 12))); // 2021-04-12T13:30:15
System.out.println(time.atDate(LocalDate.of(-900, 1, 1))); // -0900-01-01T13:30:15

OffsetTime atOffset (ZoneOffset offset)

この時間をオフセットと組み合せてOffsetTimeを作成します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

{
    final var offset = ZoneOffset.UTC;
    System.out.println(offset); // Z
    System.out.println(time.atOffset(offset)); // 13:30:15Z
}
{
    final var offset = ZoneOffset.ofHours(9);
    System.out.println(offset); // +09:00
    System.out.println(time.atOffset(offset)); // 13:30:15+09:00
}
{
    final var offset = ZoneOffset.ofHoursMinutes(-2, -30);
    System.out.println(offset); // -02:30
    System.out.println(time.atOffset(offset)); // 13:30:15-02:30
}

int compareTo (LocalTime other)

この時間を別の時間と比較します。

final var time1 = LocalTime.of(13, 30, 15);
System.out.println(time1); // 13:30:15

final var time2 = LocalTime.of(14, 30, 15);
System.out.println(time2); // 14:30:15

System.out.println(time1.compareTo(time2)); // -1
final var time1 = LocalTime.of(13, 31, 0);
System.out.println(time1); // 13:31

final var time2 = LocalTime.of(13, 30, 59);
System.out.println(time2); // 13:30:59

System.out.println(time1.compareTo(time2)); // 1
final var time1 = LocalTime.of(23, 30, 0);
System.out.println(time1); // 23:30

final var time2 = LocalTime.of(23, 30, 0);
System.out.println(time2); // 23:30

System.out.println(time1.compareTo(time2)); // 0

boolean equals (Object obj)

この時間がもう一方の時間と等しいかどうかを確認します。

final var time1 = LocalTime.of(13, 30, 15);
System.out.println(time1); // 13:30:15

final var time2 = LocalTime.of(14, 30, 15);
System.out.println(time2); // 14:30:15

System.out.println(time1.equals(time2)); // false
final var time1 = LocalTime.of(13, 31, 0);
System.out.println(time1); // 13:31

final var time2 = LocalTime.of(13, 30, 59);
System.out.println(time2); // 13:30:59

System.out.println(time1.equals(time2)); // false
final var time1 = LocalTime.of(23, 30, 0);
System.out.println(time1); // 23:30

final var time2 = LocalTime.of(23, 30, 0);
System.out.println(time2); // 23:30

System.out.println(time1.equals(time2)); // true

String format (DateTimeFormatter formatter)

指定されたフォーマッタを使用してこの時間を書式設定します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

{
    final var ret1 = time.format(DateTimeFormatter.ISO_TIME);
    System.out.println(ret1); // 13:30:15

    final var ret2 = time.format(DateTimeFormatter.ofPattern("HH時mm分ss秒"));
    System.out.println(ret2); // 13時30分15秒
}
{
    System.out.println(Locale.getDefault()); // ja_JP

    final var ret1 = time.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM));
    System.out.println(ret1); // 13:30:15

    final var ret2 = time.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT));
    System.out.println(ret2); // 13:30

    // FULL と LONG はタイムゾーンが必要です。
    //time.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.FULL)); // DateTimeException
    //time.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.LONG)); // DateTimeException
}

static LocalTime from (TemporalAccessor temporal)

時間的オブジェクトからLocalTimeのインスタンスを取得します。

final var temporal = LocalDateTime.of(2021, 1, 3, 12, 30, 55);
System.out.println(temporal); // 2021-01-03T12:30:55
System.out.println(LocalTime.from(temporal)); // 12:30:55
final var temporal = ZonedDateTime.of(2021, 1, 3, 1, 2, 3, 456, ZoneId.systemDefault());
System.out.println(temporal); // 2021-01-03T01:02:03.000000456+09:00[Asia/Tokyo]
System.out.println(LocalTime.from(temporal)); // 01:02:03.000000456
final var temporal = OffsetDateTime.of(1999, 12, 15, 4, 5, 6, 123000, ZoneOffset.ofHours(12));
System.out.println(temporal); // 1999-12-15T04:05:06.000123+12:00
System.out.println(LocalTime.from(temporal)); // 04:05:06.000123

int get (TemporalField field)

指定されたフィールドの値をこの時間からintとして取得します。

このAPIを使うより、getHourgetMinutegetSecond といったAPIを使うのをおすすめします。

final var time = LocalTime.of(13, 30, 15, 123);

System.out.println(time.get(ChronoField.HOUR_OF_DAY)); // 13
System.out.println(time.get(ChronoField.MINUTE_OF_HOUR)); // 30
System.out.println(time.get(ChronoField.SECOND_OF_MINUTE)); // 15
System.out.println(time.get(ChronoField.NANO_OF_SECOND)); // 123

//time.get(ChronoField.YEAR); // UnsupportedTemporalTypeException

int getHour ()

時フィールドを取得します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15
System.out.println(time.getHour()); // 13

long getLong (TemporalField field)

指定されたフィールドの値をこの時間からlongとして取得します。

このAPIを使うより、getHourgetMinutegetSecond といったAPIを使うのをおすすめします。

final var time = LocalTime.of(13, 30, 15, 123);

System.out.println(time.getLong(ChronoField.HOUR_OF_DAY)); // 13
System.out.println(time.getLong(ChronoField.MINUTE_OF_HOUR)); // 30
System.out.println(time.getLong(ChronoField.SECOND_OF_MINUTE)); // 15
System.out.println(time.getLong(ChronoField.NANO_OF_SECOND)); // 123

//time.getLong(ChronoField.YEAR); // UnsupportedTemporalTypeException

int getMinute ()

分フィールドを取得します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15
System.out.println(time.getMinute()); // 30

int getNano ()

ナノ秒フィールドを取得します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15
System.out.println(time.getNano()); // 0
final var time = LocalTime.of(13, 30, 15, 123456789);
System.out.println(time); // 13:30:15.123456789
System.out.println(time.getNano()); // 123456789

int getSecond ()

秒フィールドを取得します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15
System.out.println(time.getSecond()); // 15

int hashCode ()

この時間のハッシュ・コード。

System.out.println(LocalTime.of(0, 0, 0).hashCode()); // 0
System.out.println(LocalTime.of(13, 30, 15).hashCode()); // 265185847
System.out.println(LocalTime.of(13, 30, 15, 0).hashCode()); // 265185847
System.out.println(LocalTime.of(13, 30, 15, 123).hashCode()); // 265185868

boolean isAfter (LocalTime other)

この時間が、指定された時間より後にあるかどうかをチェックします。

final var time = LocalTime.of(12, 1);
System.out.println(time); // 12:01

final var time2 = LocalTime.of(12, 0);
final var time3 = LocalTime.of(12, 1);
final var time4 = LocalTime.of(12, 2);

System.out.println(time2); // 12:00
System.out.println(time3); // 12:01
System.out.println(time4); // 12:02

System.out.println(time.isAfter(time2)); // true
System.out.println(time.isAfter(time3)); // false
System.out.println(time.isAfter(time4)); // false
final var time = LocalTime.of(0, 0, 0, 1);
System.out.println(time); // 00:00:00.000000001

final var time2 = LocalTime.of(0, 0, 0);
final var time3 = LocalTime.of(0, 0, 1);
final var time4 = LocalTime.of(23, 59, 59);

System.out.println(time2); // 00:00
System.out.println(time3); // 00:00:01
System.out.println(time4); // 23:59:59

System.out.println(time.isAfter(time2)); // true
System.out.println(time.isAfter(time3)); // false
System.out.println(time.isAfter(time4)); // false

boolean isBefore (LocalTime other)

この時間が、指定された時間より前にあるかどうかをチェックします。

final var time = LocalTime.of(12, 1);
System.out.println(time); // 12:01

final var time2 = LocalTime.of(12, 0);
final var time3 = LocalTime.of(12, 1);
final var time4 = LocalTime.of(12, 2);

System.out.println(time2); // 12:00
System.out.println(time3); // 12:01
System.out.println(time4); // 12:02

System.out.println(time.isBefore(time2)); // false
System.out.println(time.isBefore(time3)); // false
System.out.println(time.isBefore(time4)); // true
final var time = LocalTime.of(0, 0, 0, 1);
System.out.println(time); // 00:00:00.000000001

final var time2 = LocalTime.of(0, 0, 0);
final var time3 = LocalTime.of(0, 0, 1);
final var time4 = LocalTime.of(23, 59, 59);

System.out.println(time2); // 00:00
System.out.println(time3); // 00:00:01
System.out.println(time4); // 23:59:59

System.out.println(time.isBefore(time2)); // false
System.out.println(time.isBefore(time3)); // true
System.out.println(time.isBefore(time4)); // true

boolean isSupported (TemporalField field)

指定されたフィールドがサポートされているかどうかをチェックします。

final var time = LocalTime.of(13, 30, 15, 123);

System.out.println(time.isSupported(ChronoField.HOUR_OF_DAY)); // true
System.out.println(time.get(ChronoField.HOUR_OF_DAY)); // 13

System.out.println(time.isSupported(ChronoField.MINUTE_OF_HOUR)); // true
System.out.println(time.get(ChronoField.MINUTE_OF_HOUR)); // 30

System.out.println(time.isSupported(ChronoField.SECOND_OF_MINUTE)); // true
System.out.println(time.get(ChronoField.SECOND_OF_MINUTE)); // 15

System.out.println(time.isSupported(ChronoField.NANO_OF_SECOND)); // true
System.out.println(time.get(ChronoField.NANO_OF_SECOND)); // 123

System.out.println(time.isSupported(ChronoField.YEAR)); // false
//time.get(ChronoField.YEAR); // UnsupportedTemporalTypeException

boolean isSupported (TemporalUnit unit)

指定された単位がサポートされているかどうかをチェックします。

final var time = LocalTime.of(13, 30, 15, 123);

System.out.println(time.isSupported(ChronoUnit.HOURS)); // true
System.out.println(time.isSupported(ChronoUnit.MINUTES)); // true
System.out.println(time.isSupported(ChronoUnit.SECONDS)); // true
System.out.println(time.isSupported(ChronoUnit.NANOS)); // true

System.out.println(time.isSupported(ChronoUnit.DAYS)); // false

LocalTime minus (long amountToSubtract, TemporalUnit unit)

指定された量を減算して、この時間のコピーを返します。

final var time = LocalTime.of(13, 30, 15, 123);
System.out.println(time); // 13:30:15.000000123

System.out.println(time.minus(1, ChronoUnit.HOURS)); // 12:30:15.000000123
System.out.println(time.minus(2, ChronoUnit.MINUTES)); // 13:28:15.000000123
System.out.println(time.minus(3, ChronoUnit.SECONDS)); // 13:30:12.000000123
System.out.println(time.minus(4, ChronoUnit.NANOS)); // 13:30:15.000000119

LocalTime minus (TemporalAmount amountToSubtract)

指定された量を減算して、この時間のコピーを返します。

final var time = LocalTime.of(13, 30, 15, 123);
System.out.println(time); // 13:30:15.000000123

System.out.println(time.minus(Duration.ofHours(1))); // 12:30:15.000000123
System.out.println(time.minus(Duration.ofMinutes(2))); // 13:28:15.000000123
System.out.println(time.minus(Duration.ofSeconds(3))); // 13:30:12.000000123
System.out.println(time.minus(Duration.ofNanos(4))); // 13:30:15.000000119

LocalTime minusHours (long hoursToSubtract)

指定された時間数を減算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

System.out.println(time.minusHours(1)); // 12:30:15
System.out.println(time.minusHours(2)); // 11:30:15
System.out.println(time.minusHours(13)); // 00:30:15
System.out.println(time.minusHours(14)); // 23:30:15

LocalTime minusMinutes (long minutesToSubtract)

指定された分数を減算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

System.out.println(time.minusMinutes(1)); // 13:29:15
System.out.println(time.minusMinutes(2)); // 13:28:15
System.out.println(time.minusMinutes(30)); // 13:00:15
System.out.println(time.minusMinutes(31)); // 12:59:15
System.out.println(time.minusMinutes(60 * 13)); // 00:30:15
System.out.println(time.minusMinutes(60 * 14)); // 23:30:15

LocalTime minusNanos (long nanosToSubtract)

指定されたナノ秒数を減算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15, 123);
System.out.println(time); // 13:30:15.000000123

System.out.println(time.minusNanos(1L)); // 13:30:15.000000122
System.out.println(time.minusNanos(2L)); // 13:30:15.000000121
System.out.println(time.minusNanos(123L)); // 13:30:15
System.out.println(time.minusNanos(124L)); // 13:30:14.999999999

LocalTime minusSeconds (long secondsToSubtract)

指定された秒数を減算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

System.out.println(time.minusSeconds(1)); // 13:30:14
System.out.println(time.minusSeconds(2)); // 13:30:13
System.out.println(time.minusSeconds(15)); // 13:30
System.out.println(time.minusSeconds(16)); // 13:29:59
System.out.println(time.minusSeconds(76)); // 13:28:59
System.out.println(time.minusSeconds(60 * 30)); // 13:00:15
System.out.println(time.minusSeconds(60 * 31)); // 12:59:15

static LocalTime now ()

デフォルトのタイムゾーンのシステム・クロックから現在の時間を取得します。

System.out.println(LocalTime.now()); // 16:13:22.874390900

static LocalTime now (Clock clock)

指定されたクロックから現在の時間を取得します。

// 意図的に6時間進めたClock
final var clock = Clock.offset(Clock.systemDefaultZone(), Duration.ofHours(6));

System.out.println(LocalTime.now()); // 16:13:32.904635100
System.out.println(LocalTime.now(clock)); // 22:13:32.906633900

static LocalTime now (ZoneId zone)

指定されたタイムゾーンのシステム・クロックから現在の時間を取得します。

System.out.println(ZoneId.systemDefault()); // Asia/Tokyo

// Asia/Tokyo は UTC と比べて +9時間の時差があります。
System.out.println(LocalTime.now()); // 16:14:27.727095100
System.out.println(LocalTime.now(ZoneOffset.UTC)); // 07:24:20.827633500

static LocalTime of (int hour, int minute)

時と分からLocalTimeのインスタンスを取得します。

System.out.println(LocalTime.of(0, 0)); // 00:00
System.out.println(LocalTime.of(12, 30)); // 12:30
System.out.println(LocalTime.of(23, 59)); // 23:59

//LocalTime.of(24, 59); // DateTimeException: Invalid value for HourOfDay (valid values 0 - 23): 24
//LocalTime.of(0, 60); // DateTimeException: Invalid value for MinuteOfHour (valid values 0 - 59): 60

static LocalTime of (int hour, int minute, int second)

時、分、および秒からLocalTimeのインスタンスを取得します。

System.out.println(LocalTime.of(0, 0, 0)); // 00:00
System.out.println(LocalTime.of(12, 30, 15)); // 12:30:15
System.out.println(LocalTime.of(23, 59, 59)); // 23:59:59

//LocalTime.of(24, 59, 0); // DateTimeException: Invalid value for HourOfDay (valid values 0 - 23): 24
//LocalTime.of(0, 60, 0); // DateTimeException: Invalid value for MinuteOfHour (valid values 0 - 59): 60
//LocalTime.of(0, 0, 60); // DateTimeException: Invalid value for SecondOfMinute (valid values 0 - 59): 60

static LocalTime of (int hour, int minute, int second, int nanoOfSecond)

時、分、秒、およびナノ秒からLocalTimeのインスタンスを取得します。

System.out.println(LocalTime.of(0, 0, 0, 0)); // 00:00
System.out.println(LocalTime.of(12, 30, 15, 12345)); // 12:30:15.000012345
System.out.println(LocalTime.of(23, 59, 59, 999999999)); // 23:59:59.999999999

//LocalTime.of(24, 59, 0, 0); // DateTimeException: Invalid value for HourOfDay (valid values 0 - 23): 24
//LocalTime.of(0, 60, 0, 0); // DateTimeException: Invalid value for MinuteOfHour (valid values 0 - 59): 60
//LocalTime.of(0, 0, 60, 0); // DateTimeException: Invalid value for SecondOfMinute (valid values 0 - 59): 60
//LocalTime.of(0, 0, 0, 1000000000); // DateTimeException: Invalid value for NanoOfSecond (valid values 0 - 999999999): 1000000000

static LocalTime ofInstant (Instant instant, ZoneId zone)

InstantとゾーンIDからLocalTimeのインスタンスを取得します。

final var instant = Instant.ofEpochSecond(1617883200);
System.out.println(instant); // 2021-04-08T12:00:00Z

System.out.println(LocalTime.ofInstant(instant, ZoneOffset.UTC)); // 12:00
System.out.println(LocalTime.ofInstant(instant, ZoneOffset.ofHours(8))); // 20:00
System.out.println(LocalTime.ofInstant(instant, ZoneOffset.ofHours(-8))); // 04:00

static LocalTime ofNanoOfDay (long nanoOfDay)

「1日のうちのナノ秒」の値からLocalTimeのインスタンスを取得します。

System.out.println(LocalTime.ofNanoOfDay(0L)); // 00:00
System.out.println(LocalTime.ofNanoOfDay(123L)); // 00:00:00.000000123
System.out.println(LocalTime.ofNanoOfDay(1000L)); // 00:00:00.000001
System.out.println(LocalTime.ofNanoOfDay(1000000L)); // 00:00:00.001
System.out.println(LocalTime.ofNanoOfDay(1000000000L)); // 00:00:01
System.out.println(LocalTime.ofNanoOfDay(1000000000L * 60)); // 00:01
System.out.println(LocalTime.ofNanoOfDay(1000000000L * 60 * 60 * 23)); // 23:00

static LocalTime ofSecondOfDay (long secondOfDay)

「1日のうちの秒」の値からLocalTimeのインスタンスを取得します。

System.out.println(LocalTime.ofSecondOfDay(0L)); // 00:00
System.out.println(LocalTime.ofSecondOfDay(59L)); // 00:00:59
System.out.println(LocalTime.ofSecondOfDay(60L)); // 00:01
System.out.println(LocalTime.ofSecondOfDay(61L)); // 00:01:01
System.out.println(LocalTime.ofSecondOfDay(62L)); // 00:01:02
System.out.println(LocalTime.ofSecondOfDay(60L * 60)); // 01:00
System.out.println(LocalTime.ofSecondOfDay(60L * 60 * 23)); // 23:00

static LocalTime parse (CharSequence text)

10:15などのテキスト文字列からLocalTimeのインスタンスを取得します。

System.out.println(LocalTime.parse("12:30")); // 12:30
System.out.println(LocalTime.parse("23:59:59.123456789")); // 23:59:59.123456789

System.out.println(LocalTime.parse("02:05:01")); // 02:05:01
//LocalTime.parse("2:5:1"); // DateTimeParseException

static LocalTime parse (CharSequence text, DateTimeFormatter formatter)

特定のフォーマッタを使用して、テキスト文字列からLocalTimeのインスタンスを取得します。

final var ret1 = LocalTime.parse("12:30:15", DateTimeFormatter.ISO_LOCAL_TIME);
System.out.println(ret1); // 12:30:15

final var ret2 = LocalTime.parse("2:5:1", DateTimeFormatter.ofPattern("H:m:s"));
System.out.println(ret2); // 02:05:01

final var ret3 = LocalTime.parse("12時30分15秒", DateTimeFormatter.ofPattern("H時m分s秒"));
System.out.println(ret3); // 12:30:15

LocalTime plus (long amountToAdd, TemporalUnit unit)

この時刻のコピーに指定された時間を追加したものを返します。

final var time = LocalTime.of(13, 30, 15, 123);
System.out.println(time); // 13:30:15.000000123

System.out.println(time.plus(1, ChronoUnit.HOURS)); // 14:30:15.000000123
System.out.println(time.plus(2, ChronoUnit.MINUTES)); // 13:32:15.000000123
System.out.println(time.plus(3, ChronoUnit.SECONDS)); // 13:30:18.000000123
System.out.println(time.plus(4, ChronoUnit.NANOS)); // 13:30:15.000000127

LocalTime plus (TemporalAmount amountToAdd)

この時刻のコピーに指定された時間を追加したものを返します。

final var time = LocalTime.of(13, 30, 15, 123);
System.out.println(time); // 13:30:15.000000123

System.out.println(time.plus(Duration.ofHours(1))); // 14:30:15.000000123
System.out.println(time.plus(Duration.ofMinutes(2))); // 13:32:15.000000123
System.out.println(time.plus(Duration.ofSeconds(3))); // 13:30:18.000000123
System.out.println(time.plus(Duration.ofNanos(4))); // 13:30:15.000000127

LocalTime plusHours (long hoursToAdd)

指定された時間数を加算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

System.out.println(time.plusHours(1)); // 14:30:15
System.out.println(time.plusHours(2)); // 15:30:15
System.out.println(time.plusHours(10)); // 23:30:15
System.out.println(time.plusHours(11)); // 00:30:15

LocalTime plusMinutes (long minutesToAdd)

指定された分数を加算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

System.out.println(time.plusMinutes(1)); // 13:31:15
System.out.println(time.plusMinutes(2)); // 13:32:15
System.out.println(time.plusMinutes(29)); // 13:59:15
System.out.println(time.plusMinutes(30)); // 14:00:15
System.out.println(time.plusMinutes(31)); // 14:01:15
System.out.println(time.plusMinutes(60 * 10)); // 23:30:15
System.out.println(time.plusMinutes(60 * 11)); // 00:30:15

LocalTime plusNanos (long nanosToAdd)

指定されたナノ秒数を加算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15, 123);
System.out.println(time); // 13:30:15.000000123

System.out.println(time.plusNanos(1L)); // 13:30:15.000000124
System.out.println(time.plusNanos(2L)); // 13:30:15.000000125
System.out.println(time.plusNanos(999999999L - 123)); // 13:30:15.999999999
System.out.println(time.plusNanos(999999999L - 122)); // 13:30:16

LocalTime plusSeconds (long secondstoAdd)

指定された秒数を加算して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(13, 30, 15);
System.out.println(time); // 13:30:15

System.out.println(time.plusSeconds(1)); // 13:30:16
System.out.println(time.plusSeconds(2)); // 13:30:17
System.out.println(time.plusSeconds(44)); // 13:30:59
System.out.println(time.plusSeconds(45)); // 13:31
System.out.println(time.plusSeconds(46)); // 13:31:01
System.out.println(time.plusSeconds(60 * 29)); // 13:59:15
System.out.println(time.plusSeconds(60 * 30)); // 14:00:15

<R> R query (TemporalQuery<R> query)

指定された問合せを使用してこの時間を問い合せます。

final var time = LocalTime.of(12, 30, 20, 123456789);
System.out.println(time); // 12:30:20.123456789
System.out.println(time.query(TemporalQueries.precision())); // Nanos

ValueRange range (TemporalField field)

指定されたフィールドの有効な値の範囲を取得します。

final var time = LocalTime.of(0, 0);

System.out.println(time.range(ChronoField.HOUR_OF_DAY)); // 0 - 23
System.out.println(time.range(ChronoField.MINUTE_OF_HOUR)); // 0 - 59
System.out.println(time.range(ChronoField.SECOND_OF_MINUTE)); // 0 - 59
System.out.println(time.range(ChronoField.NANO_OF_SECOND)); // 0 - 999999999

//time.range(ChronoField.YEAR); // UnsupportedTemporalTypeException

long toEpochSecond (LocalDate date, ZoneOffset offset)

このLocalTimeを1970-01-01T00:00:00Zの時代からの秒数に変換します。

final var time = LocalTime.of(12, 30);
System.out.println(time); // 12:30

final var date = LocalDate.of(2021, 4, 8);
System.out.println(date); // 2021-04-08

final long epochSecond1 = time.toEpochSecond(date, ZoneOffset.UTC);
System.out.println(epochSecond1); // 1617885000
System.out.println(Instant.ofEpochSecond(epochSecond1)); // 2021-04-08T12:30:00Z

final long epochSecond2 = time.toEpochSecond(date, ZoneOffset.ofHours(8));
System.out.println(epochSecond2); // 1617856200
System.out.println(Instant.ofEpochSecond(epochSecond2)); // 2021-04-08T04:30:00Z

long toNanoOfDay ()

時間を1日のナノ秒(0から24 * 60 * 60 * 1,000,000,000 - 1)として抽出します。

final var time = LocalTime.of(0, 0);
System.out.println(time); // 00:00
System.out.println(time.toNanoOfDay()); // 0
final var time = LocalTime.of(0, 0, 0, 123456789);
System.out.println(time); // 00:00:00.123456789
System.out.println(time.toNanoOfDay()); // 123456789
final var time = LocalTime.of(0, 0, 1, 123);
System.out.println(time); // 00:00:01.000000123
System.out.println(time.toNanoOfDay()); // 1000000123
final var time = LocalTime.of(0, 2, 1, 123);
System.out.println(time); // 00:02:01.000000123
System.out.println(time.toNanoOfDay()); // 121000000123
final var time = LocalTime.MAX;
System.out.println(time); // 23:59:59.999999999
System.out.println(time.toNanoOfDay()); // 86399999999999

int toSecondOfDay ()

時間を1日のうちの秒数(0から24 * 60 * 60 - 1)として抽出します。

final var time = LocalTime.of(0, 0);
System.out.println(time); // 00:00
System.out.println(time.toSecondOfDay()); // 0
final var time = LocalTime.of(0, 0, 1);
System.out.println(time); // 00:00:01
System.out.println(time.toSecondOfDay()); // 1
final var time = LocalTime.of(0, 0, 2);
System.out.println(time); // 00:00:02
System.out.println(time.toSecondOfDay()); // 2
final var time = LocalTime.of(0, 1, 0);
System.out.println(time); // 00:01
System.out.println(time.toSecondOfDay()); // 60
final var time = LocalTime.of(1, 0, 0);
System.out.println(time); // 01:00
System.out.println(time.toSecondOfDay()); // 3600
final var time = LocalTime.MAX;
System.out.println(time); // 23:59:59.999999999
System.out.println(time.toSecondOfDay()); // 86399

String toString ()

この時間をStringとして出力します(10:15など)。

final var time = LocalTime.of(0, 0);
System.out.println(time.toString()); // 00:00
final var time = LocalTime.of(1, 2, 3);
System.out.println(time.toString()); // 01:02:03
final var time = LocalTime.of(12, 30, 15, 123);
System.out.println(time.toString()); // 12:30:15.000000123
final var time = LocalTime.MAX;
System.out.println(time.toString()); // 23:59:59.999999999

LocalTime truncatedTo (TemporalUnit unit)

時間が切り捨てられた、このLocalTimeのコピーを返します。

final var time = LocalTime.of(12, 30, 15, 123456789);
System.out.println(time); // 12:30:15.123456789

System.out.println(time.truncatedTo(ChronoUnit.HOURS)); // 12:00
System.out.println(time.truncatedTo(ChronoUnit.MINUTES)); // 12:30
System.out.println(time.truncatedTo(ChronoUnit.SECONDS)); // 12:30:15
System.out.println(time.truncatedTo(ChronoUnit.NANOS)); // 12:30:15.123456789

//time.truncatedTo(ChronoUnit.YEARS); // UnsupportedTemporalTypeException

long until (Temporal endExclusive, TemporalUnit unit)

もう一方の時間までの時間量を指定された単位で計算します。

final var time1 = LocalTime.of(1, 2);
final var time2 = LocalTime.of(3, 32, 15, 123);
System.out.println(time1); // 01:02
System.out.println(time2); // 03:32:15.000000123

System.out.println(time1.until(time2, ChronoUnit.HOURS)); // 2
System.out.println(time1.until(time2, ChronoUnit.MINUTES)); // 150
System.out.println(time1.until(time2, ChronoUnit.SECONDS)); // 9015
System.out.println(time1.until(time2, ChronoUnit.NANOS)); // 9015000000123
final var time1 = LocalTime.of(1, 2, 3);
final var time2 = LocalTime.of(1, 1, 1);
System.out.println(time1); // 01:02:03
System.out.println(time2); // 01:01:01

System.out.println(time1.until(time2, ChronoUnit.HOURS)); // 0
System.out.println(time1.until(time2, ChronoUnit.MINUTES)); // -1
System.out.println(time1.until(time2, ChronoUnit.SECONDS)); // -62
System.out.println(time1.until(time2, ChronoUnit.NANOS)); // -62000000000

LocalTime with (TemporalAdjuster adjuster)

この時間の調整済のコピーを返します。

final var time = LocalTime.of(12, 30, 15);
System.out.println(time); // 12:30:15

// 秒を最大に変更する TemporalAdjuster です。
final var adjuster = new TemporalAdjuster() {
    @Override
    public Temporal adjustInto(Temporal temporal) {
        return temporal.with(ChronoField.SECOND_OF_MINUTE, 59);
    }
};

System.out.println(time.with(adjuster)); // 12:30:59

LocalTime with (TemporalField field, long newValue)

指定されたフィールドを新しい値に設定して、この時間のコピーを返します。

このAPIを使うより、withHourwithMinute といったAPIを代わりに使うことをおすすめします。

final var time = LocalTime.of(12, 30, 15, 123);
System.out.println(time); // 12:30:15.000000123

System.out.println(time.with(ChronoField.HOUR_OF_DAY, 23)); // 23:30:15.000000123
System.out.println(time.with(ChronoField.MINUTE_OF_HOUR, 59)); // 12:59:15.000000123
System.out.println(time.with(ChronoField.SECOND_OF_MINUTE, 30)); // 12:30:30.000000123
System.out.println(time.with(ChronoField.NANO_OF_SECOND, 456)); // 12:30:15.000000456

LocalTime withHour (int hour)

時の値を変更して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(12, 30, 15);
System.out.println(time); // 12:30:15
System.out.println(time.withHour(23)); // 23:30:15

LocalTime withMinute (int minute)

分の値を変更して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(12, 30, 15);
System.out.println(time); // 12:30:15
System.out.println(time.withMinute(59)); // 12:59:15

LocalTime withNano (int nanoOfSecond)

ナノ秒の値を変更して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(12, 30, 15, 123);
System.out.println(time); // 12:30:15.000000123
System.out.println(time.withNano(456789)); // 12:30:15.000456789

LocalTime withSecond (int second)

秒の値を変更して、このLocalTimeのコピーを返します。

final var time = LocalTime.of(12, 30, 15);
System.out.println(time); // 12:30:15
System.out.println(time.withSecond(59)); // 12:30:59

関連記事

ページの先頭へ