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を使うより、getSeconds や getNano を使うのをおすすめします。
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
関連記事
- 日付・時刻の基本
- Date, CalendarではなくLocalDateTime, ZonedDateTimeを使おう
- 文字列と日付・時刻の変換
- 日時と曜日の計算
- 現在時刻(日時)の取得いろいろ
- 現在の曜日(DayOfWeek)を取得
- ZoneIdとZoneOffsetの違い
- API 使用例
- Calendar (カレンダー)
- Date (日付・時刻)
- DateTimeException (日付・時刻の例外)
- DateTimeParseException (日付・時刻の解析例外)
- DayOfWeek (曜日)
- LocalDate (日付・タイムゾーンなし)
- LocalDateTime (日時・タイムゾーンなし)
- LocalTime (時刻・タイムゾーンなし)
- Month (月)
- Instant (時点)
- OffsetDateTime (日時・オフセットあり)
- OffsetTime (時刻・オフセットあり)
- Period (日付の量)
- TemporalAdjusters (日時の調整ユーティリティ)
- TimeZone (タイムゾーン)
- Year (年)
- ZonedDateTime (日時・タイムゾーンあり)
- ZoneId (タイムゾーンID)
- ZoneOffset (タイムゾーン・オフセット)