広告

Java : Duration (時間の量) - API使用例

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


概要

時間ベースの時間(「34.5秒」など)。

クラス構成

Duration は、時間の量 (長さ) を表します。
例えば、

  • 100秒 (1分と40秒)
  • 2000分 (1日と9時間と20分)

などが表現できます。

// 100秒
final var duration = Duration.ofSeconds(100);
System.out.println(duration.toSeconds()); // 100

// 100秒 = 1分と40秒
System.out.println(duration.toMinutesPart()); // 1
System.out.println(duration.toSecondsPart()); // 40
// 2000分
final var duration = Duration.ofMinutes(2000);
System.out.println(duration.toMinutes()); // 2000

// 2000分 = 1日と9時間と20分
System.out.println(duration.toDaysPart()); // 1
System.out.println(duration.toHoursPart()); // 9
System.out.println(duration.toMinutesPart()); // 20

内部的には、秒(getSeconds)とナノ秒(getNano) で値が保持されています。

似た API に Period があります。
こちらは、年と月と日を基準とした日付の量です。


フィールド

static final Duration ZERO

ゼロのデュレーションを表す定数です。

System.out.println(Duration.ZERO); // PT0S
System.out.println(Duration.ZERO.getSeconds()); // 0
System.out.println(Duration.ZERO.getNano()); // 0

メソッド

Duration abs ()

正の長さを使って、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(-100);
System.out.println(duration); // PT-1M-40S
System.out.println(duration.getSeconds()); // -100

final var ret = duration.abs();
System.out.println(ret); // PT1M40S
System.out.println(ret.getSeconds()); // 100
final var duration = Duration.ofDays(1);
System.out.println(duration); // PT24H
System.out.println(duration.getSeconds()); // 86400

final var ret = duration.abs();
System.out.println(ret); // PT24H
System.out.println(ret.getSeconds()); // 86400

Temporal addTo (Temporal temporal)

指定された時間的オブジェクトにこのデュレーションを加算します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

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

final var ret = duration.addTo(time);
System.out.println(ret); // 12:31:40
final var duration = Duration.ofDays(-1);
System.out.println(duration); // PT-24H
System.out.println(duration.toDays()); // -1

final var dateTime = LocalDateTime.of(2000, 1, 1, 0, 0);
System.out.println(dateTime); // 2000-01-01T00:00

final var ret = duration.addTo(dateTime);
System.out.println(ret); // 1999-12-31T00:00

static Duration between (Temporal startInclusive, Temporal endExclusive)

2つの時間的オブジェクト間のデュレーションを表すDurationを取得します。

final var time1 = LocalTime.of(12, 0);
final var time2 = LocalTime.of(14, 30);

System.out.println(time1); // 12:00
System.out.println(time2); // 14:30

final var duration = Duration.between(time1, time2);
System.out.println(duration); // PT2H30M
System.out.println(duration.toHoursPart()); // 2
System.out.println(duration.toMinutesPart()); // 30
final var time1 = LocalDateTime.of(2000, 1, 1, 0, 0);
final var time2 = LocalDateTime.of(2000, 1, 2, 0, 0);

System.out.println(time1); // 2000-01-01T00:00
System.out.println(time2); // 2000-01-02T00:00

final var duration = Duration.between(time1, time2);
System.out.println(duration); // PT24H
System.out.println(duration.toDaysPart()); // 1

int compareTo (Duration otherDuration)

このデュレーションを指定されたDurationと比較します。

final var duration1 = Duration.ofSeconds(123);
final var duration2 = Duration.ofSeconds(456);

System.out.println(duration1); // PT2M3S
System.out.println(duration2); // PT7M36S

System.out.println(duration1.compareTo(duration2)); // -1
final var duration1 = Duration.ofSeconds(100);
final var duration2 = Duration.ofSeconds(-100);

System.out.println(duration1); // PT1M40S
System.out.println(duration2); // PT-1M-40S

System.out.println(duration1.compareTo(duration2)); // 1
final var duration1 = Duration.ofSeconds(123);
final var duration2 = Duration.ofSeconds(123, 1);

System.out.println(duration1); // PT2M3S
System.out.println(duration2); // PT2M3.000000001S

System.out.println(duration1.compareTo(duration2)); // -1

Duration dividedBy (long divisor)

指定された値で除算された、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 0

final var ret1 = duration.dividedBy(2);
System.out.println(ret1); // PT50S
System.out.println(ret1.getSeconds()); // 50
System.out.println(ret1.getNano()); // 0

final var ret2 = duration.dividedBy(3);
System.out.println(ret2); // PT33.333333333S
System.out.println(ret2.getSeconds()); // 33
System.out.println(ret2.getNano()); // 333333333

long dividedBy (Duration divisor)

このDuration内で指定されたDurationが発生した回数を返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var divisor = Duration.ofSeconds(2);
System.out.println(divisor); // PT2S
System.out.println(divisor.getSeconds()); // 2

final var ret = duration.dividedBy(divisor);
System.out.println(ret); // 50
final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var divisor = Duration.ofSeconds(3);
System.out.println(divisor); // PT3S
System.out.println(divisor.getSeconds()); // 3

final var ret = duration.dividedBy(divisor);
System.out.println(ret); // 33

boolean equals (Object other)

指定されたDurationとこのデュレーションが等しいかどうかをチェックします。

final var duration1 = Duration.ofSeconds(60);
final var duration2 = Duration.ofMinutes(1);

System.out.println(duration1); // PT1M
System.out.println(duration2); // PT1M

System.out.println(duration1.equals(duration2)); // true
final var duration1 = Duration.ofSeconds(123);
final var duration2 = Duration.ofSeconds(456);

System.out.println(duration1); // PT2M3S
System.out.println(duration2); // PT7M36S

System.out.println(duration1.equals(duration2)); // false
final var duration1 = Duration.ofSeconds(100);
final var duration2 = Duration.ofSeconds(-100);

System.out.println(duration1); // PT1M40S
System.out.println(duration2); // PT-1M-40S

System.out.println(duration1.equals(duration2)); // false
final var duration1 = Duration.ofSeconds(123);
final var duration2 = Duration.ofSeconds(123, 1);

System.out.println(duration1); // PT2M3S
System.out.println(duration2); // PT2M3.000000001S

System.out.println(duration1.equals(duration2)); // false

static Duration from (TemporalAmount amount)

時間的な量からDurationのインスタンスを取得します。

// ※ あまり有用な例ではないかもしれません。
final var amount = Duration.ofSeconds(123);
System.out.println(amount); // PT2M3S
System.out.println(amount.getSeconds()); // 123

final var ret = Duration.from(amount);
System.out.println(ret); // PT2M3S
System.out.println(ret.getSeconds()); // 123

long get (TemporalUnit unit)

要求された単位の値を取得します。

このAPIを使うより、getSecondsgetNano を使うのをおすすめします。

final var duration = Duration.ofSeconds(100, 123);
System.out.println(duration); // PT1M40.000000123S

System.out.println(duration.get(ChronoUnit.SECONDS)); // 100
System.out.println(duration.get(ChronoUnit.NANOS)); // 123

//duration.get(ChronoUnit.DAYS); // UnsupportedTemporalTypeException: Unsupported unit: Days

int getNano ()

このデュレーションの秒内のナノ秒数を取得します。

このメソッドの使用例は、getSeconds() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

getNano は負数にはならないのでご注意ください。
具体例については、negated() のAPI使用例をご参照ください。

long getSeconds ()

このデュレーションの秒数を取得します。

final var duration = Duration.ofSeconds(100, 123);
System.out.println(duration); // PT1M40.000000123S

System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 123
final var duration = Duration.ofMinutes(1);
System.out.println(duration); // PT1M

System.out.println(duration.getSeconds()); // 60
System.out.println(duration.getNano()); // 0
final var duration = Duration.ofMillis(123456);
System.out.println(duration); // PT2M3.456S

System.out.println(duration.getSeconds()); // 123
System.out.println(duration.getNano()); // 456000000

List<TemporalUnit> getUnits ()

このデュレーションでサポートされている単位セットを取得します。

final var duration = Duration.ofSeconds(123);
System.out.println(duration.getUnits()); // [Seconds, Nanos]

int hashCode ()

このデュレーションのハッシュ・コード。

System.out.println(Duration.ZERO.hashCode()); // 0
System.out.println(Duration.ofSeconds(123).hashCode()); // 123
System.out.println(Duration.ofSeconds(123, 456).hashCode()); // 23379
System.out.println(Duration.ofMinutes(-50).hashCode()); // 2999

boolean isNegative ()

このデュレーションが負かどうかをチェックします(ゼロを除く)。

System.out.println(Duration.ZERO.isNegative()); // false
System.out.println(Duration.ofSeconds(123).isNegative()); // false
System.out.println(Duration.ofSeconds(-456).isNegative()); // true

boolean isPositive ()

ゼロを除くこの期間がプラスかどうかを確認します。

System.out.println(Duration.ZERO.isPositive()); // false
System.out.println(Duration.ofSeconds(123).isPositive()); // true
System.out.println(Duration.ofSeconds(-456).isPositive()); // false

boolean isZero ()

このデュレーションが長さゼロかどうかをチェックします。

System.out.println(Duration.ZERO.isZero()); // true
System.out.println(Duration.ofSeconds(123).isZero()); // false
System.out.println(Duration.ofSeconds(-456).isZero()); // false

Duration minus (long amountToSubtract, TemporalUnit unit)

指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.minus(20, ChronoUnit.SECONDS);
System.out.println(ret); // PT1M20S
System.out.println(ret.getSeconds()); // 80
final var duration = Duration.ofSeconds(100, 200);
System.out.println(duration); // PT1M40.0000002S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 200

final var ret = duration.minus(150, ChronoUnit.NANOS);
System.out.println(ret); // PT1M40.00000005S
System.out.println(ret.getSeconds()); // 100
System.out.println(ret.getNano()); // 50

Duration minus (Duration duration)

指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.minus(Duration.ofSeconds(20));
System.out.println(ret); // PT1M20S
System.out.println(ret.getSeconds()); // 80
final var duration = Duration.ofSeconds(100, 200);
System.out.println(duration); // PT1M40.0000002S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 200

final var ret = duration.minus(Duration.ofSeconds(0, 150));
System.out.println(ret); // PT1M40.00000005S
System.out.println(ret.getSeconds()); // 100
System.out.println(ret.getNano()); // 50

Duration minusDays (long daysToSubtract)

標準24時間日の日数で指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofDays(100);
System.out.println(duration); // PT2400H
System.out.println(duration.getSeconds()); // 8640000
System.out.println(duration.toDays()); // 100

final var ret = duration.minusDays(20);
System.out.println(ret); // PT1920H
System.out.println(ret.getSeconds()); // 6912000
System.out.println(ret.toDays()); // 80
final var duration = Duration.ofHours(34);
System.out.println(duration); // PT34H
System.out.println(duration.toDaysPart()); // 1
System.out.println(duration.toHoursPart()); // 10

final var ret = duration.minusDays(3);
System.out.println(ret); // PT-38H
System.out.println(ret.toDaysPart()); // -1
System.out.println(ret.toHoursPart()); // -14

Duration minusHours (long hoursToSubtract)

時間数で指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofHours(100);
System.out.println(duration); // PT100H
System.out.println(duration.getSeconds()); // 360000
System.out.println(duration.toHours()); // 100

final var ret = duration.minusHours(20);
System.out.println(ret); // PT80H
System.out.println(ret.getSeconds()); // 288000
System.out.println(ret.toHours()); // 80
final var duration = Duration.ofMinutes(80);
System.out.println(duration); // PT1H20M
System.out.println(duration.toHoursPart()); // 1
System.out.println(duration.toMinutesPart()); // 20

final var ret = duration.minusHours(3);
System.out.println(ret); // PT-1H-40M
System.out.println(ret.toHoursPart()); // -1
System.out.println(ret.toMinutesPart()); // -40

Duration minusMillis (long millisToSubtract)

ミリ秒数で指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofMillis(100);
System.out.println(duration); // PT0.1S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 100000000
System.out.println(duration.toMillis()); // 100

final var ret = duration.minusMillis(20);
System.out.println(ret); // PT0.08S
System.out.println(ret.getSeconds()); // 0
System.out.println(ret.getNano()); // 80000000
System.out.println(ret.toMillis()); // 80
final var duration = Duration.ofNanos(100000);
System.out.println(duration); // PT0.0001S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 100000

final var ret = duration.minusMillis(3);
System.out.println(ret); // PT-0.0029S
System.out.println(ret.getSeconds()); // -1
System.out.println(ret.getNano()); // 997100000

Duration minusMinutes (long minutesToSubtract)

分数で指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofMinutes(100);
System.out.println(duration); // PT1H40M
System.out.println(duration.getSeconds()); // 6000
System.out.println(duration.toMinutes()); // 100

final var ret = duration.minusMinutes(20);
System.out.println(ret); // PT1H20M
System.out.println(ret.getSeconds()); // 4800
System.out.println(ret.toMinutes()); // 80
final var duration = Duration.ofSeconds(80);
System.out.println(duration); // PT1M20S
System.out.println(duration.toMinutesPart()); // 1
System.out.println(duration.toSecondsPart()); // 20

final var ret = duration.minusMinutes(3);
System.out.println(ret); // PT-1H-40M
System.out.println(ret.toMinutesPart()); // -1
System.out.println(ret.toSecondsPart()); // -40

Duration minusNanos (long nanosToSubtract)

ナノ秒数で指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofNanos(100);
System.out.println(duration); // PT0.0000001S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 100

final var ret = duration.minusNanos(20);
System.out.println(ret); // PT0.00000008S
System.out.println(ret.getSeconds()); // 0
System.out.println(ret.getNano()); // 80
final var duration = Duration.ofNanos(100);
System.out.println(duration); // PT0.0000001S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 100

final var ret = duration.minusNanos(300);
System.out.println(ret); // PT-0.0000002S
System.out.println(ret.getSeconds()); // -1
System.out.println(ret.getNano()); // 999999800

Duration minusSeconds (long secondsToSubtract)

秒数で指定されたデュレーションを減算した、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.minusSeconds(20);
System.out.println(ret); // PT1M20S
System.out.println(ret.getSeconds()); // 80
final var duration = Duration.ofMillis(100);
System.out.println(duration); // PT0.1S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 100000000

final var ret = duration.minusSeconds(3);
System.out.println(ret); // PT-2.9S
System.out.println(ret.getSeconds()); // -3
System.out.println(ret.getNano()); // 100000000

Duration multipliedBy (long multiplicand)

そのスカラーで乗算された、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.multipliedBy(2);
System.out.println(ret); // PT3M20S
System.out.println(ret.getSeconds()); // 200
final var duration = Duration.ofSeconds(100, 123);
System.out.println(duration); // PT1M40.000000123S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 123

final var ret = duration.multipliedBy(3);
System.out.println(ret); // PT5M0.000000369S
System.out.println(ret.getSeconds()); // 300
System.out.println(ret.getNano()); // 369

Duration negated ()

長さを否定して、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.negated();
System.out.println(ret); // PT-1M-40S
System.out.println(ret.getSeconds()); // -100
final var duration = Duration.ofSeconds(100, 123);
System.out.println(duration); // PT1M40.000000123S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 123

final var ret = duration.negated();
System.out.println(ret); // PT-1M-40.000000123S
System.out.println(ret.getSeconds()); // -101
System.out.println(ret.getNano()); // 999999877

static Duration of (long amount, TemporalUnit unit)

指定された単位での量を表すDurationを取得します。

final var duration = Duration.of(100, ChronoUnit.SECONDS);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 0
final var duration = Duration.of(123, ChronoUnit.NANOS);
System.out.println(duration); // PT0.000000123S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 123

static Duration ofDays (long days)

標準24時間日の数を表すDurationを取得します。

final var duration = Duration.ofDays(2);
System.out.println(duration); // PT48H
System.out.println(duration.getSeconds()); // 172800
System.out.println(duration.getNano()); // 0

System.out.println(duration.toDays()); // 2
System.out.println(duration.toHours()); // 48
System.out.println(duration.toMinutes()); // 2880

static Duration ofHours (long hours)

標準の時間数を表すDurationを取得します。

final var duration = Duration.ofHours(2);
System.out.println(duration); // PT2H
System.out.println(duration.getSeconds()); // 7200
System.out.println(duration.getNano()); // 0

System.out.println(duration.toHours()); // 2
System.out.println(duration.toMinutes()); // 120

static Duration ofMillis (long millis)

ミリ秒数を表すDurationを取得します。

final var duration = Duration.ofMillis(200);
System.out.println(duration); // PT0.2S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 200000000

System.out.println(duration.toMillis()); // 200

static Duration ofMinutes (long minutes)

標準の分数を表すDurationを取得します。

final var duration = Duration.ofMinutes(2);
System.out.println(duration); // PT2M
System.out.println(duration.getSeconds()); // 120
System.out.println(duration.getNano()); // 0

System.out.println(duration.toMinutes()); // 2

static Duration ofNanos (long nanos)

ナノ秒数を表すDurationを取得します。

final var duration = Duration.ofNanos(123);
System.out.println(duration); // PT0.000000123S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 123

static Duration ofSeconds (long seconds)

秒数を表すDurationを取得します。

final var duration = Duration.ofSeconds(123);
System.out.println(duration); // PT2M3S
System.out.println(duration.getSeconds()); // 123
System.out.println(duration.getNano()); // 0

static Duration ofSeconds (long seconds, long nanoAdjustment)

秒数およびナノ秒数での調整を表すDurationを取得します。

final var duration = Duration.ofSeconds(123, 456);
System.out.println(duration); // PT2M3.000000456S
System.out.println(duration.getSeconds()); // 123
System.out.println(duration.getNano()); // 456

static Duration parse (CharSequence text)

PnDTnHnMn.nSなどのテキスト文字列からDurationを取得します。

final var duration = Duration.parse("PT20.345S");
System.out.println(duration); // PT20.345S
System.out.println(duration.getSeconds()); // 20
System.out.println(duration.getNano()); // 345000000

System.out.println(duration.toMillisPart()); // 345
final var duration = Duration.parse("P2DT3H4M");
System.out.println(duration); // PT51H4M
System.out.println(duration.getSeconds()); // 183840
System.out.println(duration.getNano()); // 0

System.out.println(duration.toDaysPart()); // 2
System.out.println(duration.toHoursPart()); // 3
System.out.println(duration.toMinutesPart()); // 4

Duration plus (long amountToAdd, TemporalUnit unit)

指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.plus(20, ChronoUnit.SECONDS);
System.out.println(ret); // PT2M
System.out.println(ret.getSeconds()); // 120
final var duration = Duration.ofSeconds(100, 200);
System.out.println(duration); // PT1M40.0000002S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 200

final var ret = duration.plus(150, ChronoUnit.NANOS);
System.out.println(ret); // PT1M40.00000035S
System.out.println(ret.getSeconds()); // 100
System.out.println(ret.getNano()); // 350

Duration plus (Duration duration)

指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.plus(Duration.ofSeconds(20));
System.out.println(ret); // PT2M
System.out.println(ret.getSeconds()); // 120
final var duration = Duration.ofSeconds(100, 200);
System.out.println(duration); // PT1M40.0000002S
System.out.println(duration.getSeconds()); // 100
System.out.println(duration.getNano()); // 200

final var ret = duration.plus(Duration.ofSeconds(0, 150));
System.out.println(ret); // PT1M40.00000035S
System.out.println(ret.getSeconds()); // 100
System.out.println(ret.getNano()); // 350

Duration plusDays (long daysToAdd)

標準24時間日の日数で指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofDays(100);
System.out.println(duration); // PT2400H
System.out.println(duration.getSeconds()); // 8640000
System.out.println(duration.toDays()); // 100

final var ret = duration.plusDays(20);
System.out.println(ret); // PT2880H
System.out.println(ret.getSeconds()); // 10368000
System.out.println(ret.toDays()); // 120
final var duration = Duration.ofHours(-34);
System.out.println(duration); // PT-34H
System.out.println(duration.toDaysPart()); // -1
System.out.println(duration.toHoursPart()); // -10

final var ret = duration.plusDays(3);
System.out.println(ret); // PT38H
System.out.println(ret.toDaysPart()); // 1
System.out.println(ret.toHoursPart()); // 14

Duration plusHours (long hoursToAdd)

時間数で指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofHours(100);
System.out.println(duration); // PT100H
System.out.println(duration.getSeconds()); // 360000
System.out.println(duration.toHours()); // 100

final var ret = duration.plusHours(20);
System.out.println(ret); // PT120H
System.out.println(ret.getSeconds()); // 432000
System.out.println(ret.toHours()); // 120
final var duration = Duration.ofMinutes(-80);
System.out.println(duration); // PT-1H-20M
System.out.println(duration.toHoursPart()); // -1
System.out.println(duration.toMinutesPart()); // -20

final var ret = duration.plusHours(3);
System.out.println(ret); // PT1H40M
System.out.println(ret.toHoursPart()); // 1
System.out.println(ret.toMinutesPart()); // 40

Duration plusMillis (long millisToAdd)

ミリ秒数で指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofMillis(100);
System.out.println(duration); // PT0.1S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 100000000
System.out.println(duration.toMillis()); // 100

final var ret = duration.plusMillis(20);
System.out.println(ret); // PT0.12S
System.out.println(ret.getSeconds()); // 0
System.out.println(ret.getNano()); // 120000000
System.out.println(ret.toMillis()); // 120
final var duration = Duration.ofSeconds(-1, 900000000);
System.out.println(duration); // PT-0.1S
System.out.println(duration.getSeconds()); // -1
System.out.println(duration.getNano()); // 900000000

final var ret = duration.plusMillis(300);
System.out.println(ret); // PT0.2S
System.out.println(ret.getSeconds()); // 0
System.out.println(ret.getNano()); // 200000000

Duration plusMinutes (long minutesToAdd)

分数で指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofMinutes(100);
System.out.println(duration); // PT1H40M
System.out.println(duration.getSeconds()); // 6000
System.out.println(duration.toMinutes()); // 100

final var ret = duration.plusMinutes(20);
System.out.println(ret); // PT2H
System.out.println(ret.getSeconds()); // 7200
System.out.println(ret.toMinutes()); // 120
final var duration = Duration.ofSeconds(-80);
System.out.println(duration); // PT-1M-20S
System.out.println(duration.toMinutesPart()); // -1
System.out.println(duration.toSecondsPart()); // -20

final var ret = duration.plusMinutes(3);
System.out.println(ret); // PT1M40S
System.out.println(ret.toMinutesPart()); // 1
System.out.println(ret.toSecondsPart()); // 40

Duration plusNanos (long nanosToAdd)

ナノ秒数で指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofNanos(100);
System.out.println(duration); // PT0.0000001S
System.out.println(duration.getSeconds()); // 0
System.out.println(duration.getNano()); // 100

final var ret = duration.plusNanos(20);
System.out.println(ret); // PT0.00000012S
System.out.println(ret.getSeconds()); // 0
System.out.println(ret.getNano()); // 120
final var duration = Duration.ofSeconds(-1, 999999999);
System.out.println(duration); // PT-0.000000001S
System.out.println(duration.getSeconds()); // -1
System.out.println(duration.getNano()); // 999999999

final var ret = duration.plusNanos(300);
System.out.println(ret); // PT0.000000299S
System.out.println(ret.getSeconds()); // 0
System.out.println(ret.getNano()); // 299

Duration plusSeconds (long secondsToAdd)

秒数で指定されたデュレーションを加算した、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(100);
System.out.println(duration); // PT1M40S
System.out.println(duration.getSeconds()); // 100

final var ret = duration.plusSeconds(20);
System.out.println(ret); // PT2M
System.out.println(ret.getSeconds()); // 120
final var duration = Duration.ofMillis(-100);
System.out.println(duration); // PT-0.1S
System.out.println(duration.getSeconds()); // -1
System.out.println(duration.getNano()); // 900000000

final var ret = duration.plusSeconds(3);
System.out.println(ret); // PT2.9S
System.out.println(ret.getSeconds()); // 2
System.out.println(ret.getNano()); // 900000000

Temporal subtractFrom (Temporal temporal)

指定された時間的オブジェクトからこのデュレーションを減算します。

final var duration = Duration.ofSeconds(30);
System.out.println(duration); // PT30S
System.out.println(duration.getSeconds()); // 30

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

final var ret = duration.subtractFrom(time);
System.out.println(ret); // 11:59:30

long toDays ()

このデュレーションの日数を取得します。

// 183840秒 = 2日と3時間と4分
final var duration = Duration.ofDays(2).plusHours(3).plusMinutes(4);
System.out.println(duration); // PT51H4M
System.out.println(duration.getSeconds()); // 183840

System.out.println(duration.toDays()); // 2
System.out.println(duration.toDaysPart()); // 2

System.out.println(duration.toHours()); // 51
System.out.println(duration.toHoursPart()); // 3

System.out.println(duration.toMinutes()); // 3064
System.out.println(duration.toMinutesPart()); // 4

long toDaysPart ()

期間内の日数を抽出します。

このメソッドの使用例は、toDays() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

long toHours ()

このデュレーションの時数を取得します。

このメソッドの使用例は、toDays() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int toHoursPart ()

期間中の時間数を抽出します。

このメソッドの使用例は、toDays() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

long toMillis ()

このデュレーションを合計長(ミリ秒単位)に変換します。

このメソッドの使用例は、toSeconds() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int toMillisPart ()

期間のミリ秒数を抽出します。

このメソッドの使用例は、toSeconds() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

long toMinutes ()

このデュレーションの分数を取得します。

このメソッドの使用例は、toDays() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int toMinutesPart ()

期間中の分数を抽出します。

このメソッドの使用例は、toDays() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

long toNanos ()

このデュレーションを合計長(longで表現されるナノ秒単位)に変換します。

このメソッドの使用例は、toSeconds() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

int toNanosPart ()

持続時間の秒以内にナノ秒の部分を取得します。

このメソッドの使用例は、toSeconds() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

long toSeconds ()

このデュレーションの秒数を取得します。

final var duration = Duration.ofSeconds(123).plusMillis(456).plusNanos(789);
System.out.println(duration); // PT2M3.456000789S
System.out.println(duration.getSeconds()); // 123
System.out.println(duration.getNano()); // 456000789

System.out.println(duration.toMinutes()); // 2
System.out.println(duration.toMinutesPart()); // 2

System.out.println(duration.toSeconds()); // 123
System.out.println(duration.toSecondsPart()); // 3

System.out.println(duration.toMillis()); // 123456
System.out.println(duration.toMillisPart()); // 456

System.out.println(duration.toNanos()); // 123456000789
System.out.println(duration.toNanosPart()); // 456000789

int toSecondsPart ()

期間中の秒数を抽出します。

このメソッドの使用例は、toSeconds() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

String toString ()

このデュレーションの、ISO-8601秒ベース表現を使用した文字列表現です(PT8H6M12.345Sなど)。

final var str1 = Duration.ofSeconds(12, 345);
System.out.println(str1); // PT12.000000345S

final var str2 = Duration.ofDays(1).plusHours(2).plusMinutes(3);
System.out.println(str2); // PT26H3M

Duration truncatedTo (TemporalUnit unit)

指定された単位に切り捨てられたこのDurationのコピーを返します。

final var duration = Duration.ofSeconds(123).plusMillis(456).plusNanos(789);
System.out.println(duration); // PT2M3.456000789S
System.out.println(duration.getSeconds()); // 123
System.out.println(duration.getNano()); // 456000789

final var ret1 = duration.truncatedTo(ChronoUnit.MINUTES);
System.out.println(ret1); // PT2M
System.out.println(ret1.getSeconds()); // 120
System.out.println(ret1.getNano()); // 0

final var ret2 = duration.truncatedTo(ChronoUnit.SECONDS);
System.out.println(ret2); // PT2M3S
System.out.println(ret2.getSeconds()); // 123
System.out.println(ret2.getNano()); // 0

final var ret3 = duration.truncatedTo(ChronoUnit.MILLIS);
System.out.println(ret3); // PT2M3.456S
System.out.println(ret3.getSeconds()); // 123
System.out.println(ret3.getNano()); // 456000000

Duration withNanos (int nanoOfSecond)

指定されたナノ秒を使って、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(123, 456);
System.out.println(duration); // PT2M3.000000456S
System.out.println(duration.getSeconds()); // 123
System.out.println(duration.getNano()); // 456

final var ret = duration.withNanos(789);
System.out.println(ret); // PT2M3.000000789S
System.out.println(ret.getSeconds()); // 123
System.out.println(ret.getNano()); // 789

Duration withSeconds (long seconds)

指定された秒数を使って、このデュレーションのコピーを返します。

final var duration = Duration.ofSeconds(123, 456);
System.out.println(duration); // PT2M3.000000456S
System.out.println(duration.getSeconds()); // 123
System.out.println(duration.getNano()); // 456

final var ret = duration.withSeconds(789);
System.out.println(ret); // PT13M9.000000456S
System.out.println(ret.getSeconds()); // 789
System.out.println(ret.getNano()); // 456

関連記事

ページの先頭へ