広告

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

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


概要

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

クラス構成

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

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

などが表現できます。

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

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

// 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

フィールド

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(2100, 1, 1, 0, 0);
System.out.println(dateTime); // 2100-01-01T00:00

final var ret = duration.addTo(dateTime);
System.out.println(ret); // 2099-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(2100, 1, 1, 0, 0);
final var time2 = LocalDateTime.of(2100, 1, 2, 0, 0);

System.out.println(time1); // 2100-01-01T00:00
System.out.println(time2); // 2100-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)

指定した期間がこの期間内に発生した全体の回数を返します。

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)

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

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
final var duration = Duration.ofDays(1);
System.out.println(duration); // PT24H

try {
    final var ret = duration.get(ChronoUnit.DAYS);
} catch (UnsupportedTemporalTypeException e) {
    System.out.println("UnsupportedTemporalTypeException! : " + e.getMessage());
}

// 結果
// ↓
//UnsupportedTemporalTypeException! : Unsupported unit: Days

int getNano ()

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

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

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

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

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

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

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 toHours ()

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

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

int toHoursPart ()

期間内の時間数部分を抽出します。

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 toMillis ()

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

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 toMillisPart ()

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

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

long toMinutes ()

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

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

int toMinutesPart ()

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

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 toNanos ()

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

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 toNanosPart ()

ナノ秒の部分を期間の秒単位で取得します。

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

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

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

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

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

関連記事

ページの先頭へ