モジュール java.base
パッケージ java.time

クラスInstant

java.lang.Object
java.time.Instant
すべての実装されたインタフェース:
Serializable, Comparable<Instant>, Temporal, TemporalAccessor, TemporalAdjuster

public final class Instant extends Object implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable
時系列の時点。

このクラスは時系列上の単一時点をモデル化します。 これは、イベントタイムスタンプをアプリケーションに記録するために使用できます。

インスタントの範囲は、longよりも大きな秒数の保存を必要とします。 これを実現するために、このクラスはエポック秒を表すlongと、「1秒のうちのナノ秒」を表すint(常に0と999,999,999の間になる)を保存します。 エポック秒は、標準Javaエポック (1970-01-01T00:00:00Z) から測定されます。エポック後のインスタントは正の値を持ち、エポック前のインスタントは負の値を持ちます。 エポック秒とナノ秒の部分では、大きな値は小さな値よりも時系列上で常に後になります。

タイム・スケール

人間が時間を測定する標準手段は太陽日の長さです。 この長さは伝統的に、24時間/60分/60秒に分割されてきました(86400秒/日)。

現代の計時は、セシウム原子の遷移を基準としてSI秒を正確に定義する原子時計に基づいています。 SI秒の長さは1日の86400分の1に非常に近くなるように定義されました。

残念なことに、地球が回転すると1日の長さは変わります。 さらに、時間の経過とともに地球の速度が遅くなり、1日の平均の長さが長くなりつつあります。 その結果、2012年の太陽日の長さは86400 SI秒より若干長いです。 任意の特定日の実際の長さと地球の速度が遅くなる時間量は予測できず、測定によってのみ決定できます。 UT1タイム・スケールは1日の正確な長さを計算し、その日が終わった後一定期間のみ使用できます。

UTCタイム・スケールは、UT1の1秒未満の時間をまとめて整数秒(うるう秒と呼ばれる)にする標準アプローチです。 うるう秒は地球の回転の変化に応じて追加または削除されます。 つまり、UTCは、1日を太陽と整合させるために、必要に応じて1日が86399 SI秒または86401 SI秒であることを許可します。

現代のUTCタイム・スケールは、1972年に導入されたもので、整数うるう秒の概念を導入しました。 1958年から1972年の間はUTCの定義は複雑で、概念上の秒の長さに対して秒未満の小さな調整を行っていました。 2012年現在は、UTCの定義をさらに変更する協議が進行中です。うるう秒が廃止されたり、ほかの変更が導入される可能性もあります。

これまで説明してきたように、正確な計時は複雑なことを考慮して、このJava APIでは独自のタイム・スケール(Javaタイム・スケール)を定義します。

Javaタイム・スケールでは、各暦日を正確に86400下位区分(秒と呼ばれます)に分割します。 これらの秒はSI秒と異なる場合があります。 デファクト国際民間タイム・スケールと厳密に一致し、その定義は随時変わります。

Javaタイム・スケールには、民間時間のベースとして使用されるコンセンサス国際タイム・スケールに基づいて、わずかに異なる定義を持つ時系列セグメントが存在します。 国際的に合意されたタイム・スケールが変更または置換されるたびに、そのための新しいJavaタイム・スケール・セグメントが定義される必要があります。 各セグメントはこれらの要件を満たす必要があります。

  • Javaタイム・スケールは、基礎となる国際民間タイム・スケールと厳密に一致する。
  • Javaタイム・スケールは、国際民間タイム・スケールと毎正午に正確に一致する。
  • Javaタイム・スケーツは、国際民間タイム・スケールに対する正確に定義された関係を持つ。
2013年現在、Javaタイム・スケールには2つのセグメントがあります。

1972年11月3日(これから説明する正確な境界)からのセグメントの場合、別途通知があるまでコンセンサス国際タイム・スケールはUTC(うるう秒を使用)です。 このセグメントでは、Javaタイム・スケールはUTC-SLSと同一です。 これは、うるう秒のない日ではUTCと同一です。 うるう秒がある日では、うるう秒がその日の最後の1000秒に均等に分散され、表面上は厳密に86400秒/日のままです。

1972年11月03日より前のセグメントの場合、任意の遠い過去にさかのぼって、コンセンサス国際タイム・スケールはUT1であるように定義され、先発的に適用されます。グリニッジ子午線上の(平均)太陽時と同等です。 このセグメントでは、Javaタイム・スケールはコンセンサス国際タイム・スケールと同一です。 2つのセグメントの間の正確な境界は、1972-11-03T00:00と1972-11-04T12:00との間の、UT1 = UTCであるインスタントです。

JSR-310 APIを使用するJavaタイム・スケールの実装は、1秒未満まで正確であるクロックや、単調または滑らかに進むクロックを提供することは求められません。 したがって実装は、実際にUTC-SLS slewを実行する必要はなく、そうでない場合でもうるう秒を意識する必要はありません。 ただし、JSR-310は、現在のインスタントを表現するクロックを定義するときに使用するアプローチを実装がドキュメント化する必要があることを求めています。 使用可能なクロックの詳細については、Clockを参照してください。

Javaタイム・スケールはすべての日付/時間クラスで使用されます。 これにはInstantLocalDateLocalTimeOffsetDateTimeZonedDateTimeおよびDurationが含まれます。

これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。 比較する場合は、equalsメソッドを使用することをお薦めします。

実装要件:
このクラスは不変でスレッドセーフです。
導入されたバージョン:
1.8
関連項目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final Instant
    1970-01-01T00:00:00Zエポック・インスタントの定数。
    static final Instant
    サポートされる最大Instant、1000000000-12-31T23:59:59.999999999Z。
    static final Instant
    サポートされる最小Instant、-1000000000-01-01T00:00Z。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    adjustInto(Temporal temporal)
    指定された時間的オブジェクトがこのインスタントを持つように調整します。
    このインスタントとオフセットを組み合わせてOffsetDateTimeを作成します。
    atZone(ZoneId zone)
    このインスタントとタイムゾーンを組み合わせてZonedDateTimeを作成します。
    int
    compareTo(Instant otherInstant)
    このインスタントと指定されたインスタントを比較します。
    boolean
    equals(Object other)
    指定されたインスタントとこのインスタントが等しいかどうかをチェックします。
    static Instant
    Instantのインスタンスを時間的オブジェクトから取得します。
    int
    指定されたフィールドの値をこのインスタントからintとして取得します。
    long
    Javaエポック1970-01-01T00:00:00Zからの秒数を取得します。
    long
    指定されたフィールドの値をこのインスタントからlongとして取得します。
    int
    秒の始まりから時系列の後の方へのナノ秒数を取得します。
    int
    このインスタントのハッシュ・コードを返します。
    boolean
    isAfter(Instant otherInstant)
    このインスタントが指定されたインスタントの後かどうかをチェックします。
    boolean
    isBefore(Instant otherInstant)
    このインスタントが指定されたインスタントの前かどうかをチェックします。
    boolean
    指定されたフィールドがサポートされているかどうかをチェックします。
    boolean
    指定された単位がサポートされているかどうかをチェックします。
    minus(long amountToSubtract, TemporalUnit unit)
    このインスタントのコピーから指定された量を引いたものを返します。
    minus(TemporalAmount amountToSubtract)
    このインスタントのコピーから指定された量を引いたものを返します。
    minusMillis(long millisToSubtract)
    このインスタントのコピーから指定されたミリ秒単位デュレーションを引いたものを返します。
    minusNanos(long nanosToSubtract)
    このインスタントのコピーから指定されたナノ秒単位デュレーションを引いたものを返します。
    minusSeconds(long secondsToSubtract)
    このインスタントのコピーから指定された秒単位デュレーションを引いたものを返します。
    static Instant
    now()
    システム・クロックから現在のインスタントを取得します。
    static Instant
    now(Clock clock)
    指定されたクロックから現在のインスタントを取得します。
    static Instant
    ofEpochMilli(long epochMilli)
    Instantのインスタンスをエポック1970-01-01T00:00:00Zからのミリ秒数を使用して取得します。
    static Instant
    ofEpochSecond(long epochSecond)
    Instantのインスタンスをエポック1970-01-01T00:00:00Zからの秒数を使用して取得します。
    static Instant
    ofEpochSecond(long epochSecond, long nanoAdjustment)
    Instantのインスタンスをエポック1970-01-01T00:00:00Zからの秒数と秒のナノ秒部分を使用して取得します。
    static Instant
    2007-12-03T10:15:30.00Zなどのテキスト文字列からInstantのインスタンスを取得します。
    plus(long amountToAdd, TemporalUnit unit)
    指定された量を加算した、このインスタントのコピーを返します。
    plus(TemporalAmount amountToAdd)
    指定された量を加算した、このインスタントのコピーを返します。
    plusMillis(long millisToAdd)
    このインスタントのコピーに指定されたミリ秒単位デュレーションを加算したものを返します。
    plusNanos(long nanosToAdd)
    このインスタントのコピーに指定されたナノ秒単位デュレーションを加算したものを返します。
    plusSeconds(long secondsToAdd)
    このインスタントのコピーに指定された秒単位デュレーションを加算したものを返します。
    <R> R
    query(TemporalQuery<R> query)
    指定された問合せを使用してこのインスタントを問い合わせます。
    指定されたフィールドの有効な値の範囲を取得します。
    long
    このインスタントをエポック1970-01-01T00:00:00Zからのミリ秒数に変換します。
    ISO-8601表現によるこのインスタントの文字列表現です。
    指定された単位に切り捨てられた状態で、このInstantのコピーを返します。
    long
    until(Temporal endExclusive, TemporalUnit unit)
    もう一方のインスタントまでの時間量を指定された単位で計算します。
    このインスタントの調整済のコピーを返します。
    with(TemporalField field, long newValue)
    指定されたフィールドを新しい値に設定して、このインスタントのコピーを返します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • EPOCH

      public static final Instant EPOCH
      1970-01-01T00:00:00Zエポック・インスタントの定数。
    • MIN

      public static final Instant MIN
      サポートされる最小Instant、-1000000000-01-01T00:00Z。 これは、遠い過去のインスタントとしてアプリケーションで使用できます。

      これは、最小LocalDateTimeの1年前です。 これにより、ローカル日付/時間に加えてインスタントに影響するZoneOffsetの範囲を扱うために十分な値が提供されます。 この値は、年の値がintに収まるようにも選択されます。

    • MAX

      public static final Instant MAX
      サポートされる最大Instant、1000000000-12-31T23:59:59.999999999Z。 これは、遠い未来のインスタントとしてアプリケーションで使用できます。

      これは、最大LocalDateTimeの1年後です。 これにより、ローカル日付/時間に加えてインスタントに影響するZoneOffsetの範囲を扱うために十分な値が提供されます。 この値は、年の値がintに収まるようにも選択されます。

  • メソッドの詳細

    • now

      public static Instant now()
      システム・クロックから現在のインスタントを取得します。

      これは、システムUTCクロックを照会して現在のインスタントを取得します。

      このメソッドを使用すると、テストで代替時間ソースを使用できなくなります。実際はクロックがハードコードされているためです。

      戻り値:
      システム・クロックを使用する現在のインスタント、nullでない
    • now

      public static Instant now(Clock clock)
      指定されたクロックから現在のインスタントを取得します。

      これは、指定されたクロックを照会して現在の時間を取得します。

      このメソッドを使用すると、テストに代替のクロックを使用できます。 代替のクロックはdependency injectionを使用して導入できます。

      パラメータ:
      clock - 使用するクロック、null以外
      戻り値:
      現在のインスタント、nullでない
    • ofEpochSecond

      public static Instant ofEpochSecond(long epochSecond)
      Instantのインスタンスをエポック1970-01-01T00:00:00Zからの秒数を使用して取得します。

      ナノ秒フィールドはゼロに設定されます。

      パラメータ:
      epochSecond - 1970-01-01T00:00:00Zからの秒数
      戻り値:
      インスタント、nullでない
      例外:
      DateTimeException - インスタントが最大または最小インスタントを超える場合
    • ofEpochSecond

      public static Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
      Instantのインスタンスをエポック1970-01-01T00:00:00Zからの秒数と秒のナノ秒部分を使用して取得します。

      このメソッドには任意のナノ秒数を渡すことができます。 ファクトリは、保存済みナノ秒の範囲が0から999,999,999であることを保証するために、秒とナノ秒の値を変更します。 たとえば、次のような場合、即時に同じになります。

        Instant.ofEpochSecond(3, 1);
        Instant.ofEpochSecond(4, -999_999_999);
        Instant.ofEpochSecond(2, 1000_000_001);
       

      パラメータ:
      epochSecond - 1970-01-01T00:00:00Zからの秒数
      nanoAdjustment - 秒数に対するナノ秒調整、正または負
      戻り値:
      インスタント、nullでない
      例外:
      DateTimeException - インスタントが最大または最小インスタントを超える場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • ofEpochMilli

      public static Instant ofEpochMilli(long epochMilli)
      Instantのインスタンスをエポック1970-01-01T00:00:00Zからのミリ秒数を使用して取得します。

      秒とナノ秒が、指定されたミリ秒から抽出されます。

      パラメータ:
      epochMilli - 1970-01-01T00:00:00Zからのミリ秒数
      戻り値:
      インスタント、nullでない
      例外:
      DateTimeException - インスタントが最大または最小インスタントを超える場合
    • from

      public static Instant from(TemporalAccessor temporal)
      Instantのインスタンスを時間的オブジェクトから取得します。

      これは、指定された時間的オブジェクトに基づいてインスタントを取得します。 TemporalAccessorは日付/時間情報の任意セットを表し、このファクトリはこれをInstantのインスタンスに変換します。

      この変換はINSTANT_SECONDSおよびNANO_OF_SECONDフィールドを抽出します。

      このメソッドは関数型インタフェースTemporalQueryのシグネチャに一致するため、メソッド参照Instant::from経由の問合せとして使用できます。

      パラメータ:
      temporal - 変換する一時オブジェクト、null以外
      戻り値:
      インスタント、nullでない
      例外:
      DateTimeException - Instantに変換できない場合
    • parse

      public static Instant parse(CharSequence text)
      2007-12-03T10:15:30.00Zなどのテキスト文字列からInstantのインスタンスを取得します。

      文字列はUTC内の有効なインスタントを表現している必要があり、DateTimeFormatter.ISO_INSTANTを使用して解析されます。

      パラメータ:
      text - 解析するテキスト。null以外
      戻り値:
      解析されたインスタント、nullでない
      例外:
      DateTimeParseException - テキストが解析できない場合
    • isSupported

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

      これは、指定されたフィールドについてこのインスタントを照会できるかどうかをチェックします。 falseの場合、rangeget、およびwith(TemporalField, long)メソッドの呼び出しは、例外をスローします。

      フィールドがChronoFieldの場合、ここに問合せを実装します。 サポートされるフィールドは、次のとおりです。

      • NANO_OF_SECOND
      • MICRO_OF_SECOND
      • MILLI_OF_SECOND
      • INSTANT_SECONDS
      他のすべてのChronoFieldインスタンスはfalseを返します。

      フィールドがChronoFieldでない場合、このメソッドの結果は、thisを引数として渡してTemporalField.isSupportedBy(TemporalAccessor)を呼び出すことによって取得します。 フィールドがサポートされているかどうかはフィールドによって決定します。

      定義:
      インタフェースTemporalAccessorisSupported
      パラメータ:
      field - チェックするフィールド、nullはfalseを返す
      戻り値:
      フィールドがこのインスタントでサポートされている場合はtrue、そうでない場合はfalse
    • isSupported

      public boolean isSupported(TemporalUnit unit)
      指定された単位がサポートされているかどうかをチェックします。

      これは、指定された単位をこの日付/時間に対して加算または減算できるかどうかをチェックします。 falseの場合、plus(long, TemporalUnit)およびminusメソッドの呼び出しは、例外をスローします。

      単位がChronoUnitの場合、問合せはここで実装されます。 サポートされる単位は次のとおりです。

      • NANOS
      • MICROS
      • MILLIS
      • SECONDS
      • MINUTES
      • HOURS
      • HALF_DAYS
      • DAYS
      他のすべてのChronoUnitインスタンスはfalseを返します。

      単位がChronoUnitでない場合、このメソッドの結果は、thisを引数として渡してTemporalUnit.isSupportedBy(Temporal)を呼び出すことによって取得します。 単位がサポートされているかどうかは単位によって決定します。

      定義:
      インタフェースTemporalisSupported
      パラメータ:
      unit - チェックする単位、nullはfalseを返す
      戻り値:
      単位を加算/減算できる場合はtrue、できない場合はfalse
    • range

      public ValueRange range(TemporalField field)
      指定されたフィールドの有効な値の範囲を取得します。

      範囲オブジェクトはフィールドの有効な最小値と最大値を表します。 このインスタントは返される範囲の精度を高めるために使用されます。 範囲を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。

      フィールドがChronoFieldの場合、ここに問合せを実装します。 サポートされるフィールドは適切な範囲のインスタンスを返します。 他のすべてのChronoFieldインスタンスはUnsupportedTemporalTypeExceptionをスローします。

      フィールドがChronoFieldではない場合、このメソッドの結果は、引数としてthisを渡してTemporalField.rangeRefinedBy(TemporalAccessor)を呼び出すことにより取得されます。 範囲を取得できるかどうかはフィールドによって決まります。

      定義:
      インタフェースTemporalAccessorrange
      パラメータ:
      field - 範囲を問い合わせるフィールド、null以外
      戻り値:
      フィールドの有効値の範囲。null以外
      例外:
      DateTimeException - フィールドの範囲を取得できない場合
      UnsupportedTemporalTypeException - フィールドがサポートされていない場合
    • get

      public int get(TemporalField field)
      指定されたフィールドの値をこのインスタントからintとして取得します。

      これは、指定されたフィールドの値についてこのインスタントに問い合せます。 返される値は常にフィールドの値の有効な範囲内になります。 値を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。

      フィールドがChronoFieldの場合、ここに問合せを実装します。 サポートされるフィールドはこの日付/時間に基づく有効な値を返します。ただし、INSTANT_SECONDSは除きます (大きすぎてintに収まらず、DateTimeExceptionをスローする)。 他のすべてのChronoFieldインスタンスはUnsupportedTemporalTypeExceptionをスローします。

      フィールドがChronoFieldではない場合、このメソッドの結果は、引数としてthisを渡してTemporalField.getFrom(TemporalAccessor)を呼び出すことにより取得されます。 値を取得できるかどうか、および値が何を表すかは、フィールドによって決まります。

      定義:
      インタフェースTemporalAccessorget
      パラメータ:
      field - 取得するフィールド、null以外
      戻り値:
      フィールドの値
      例外:
      DateTimeException - フィールドの値を取得できない場合、または値がフィールドの有効な値の範囲外の場合
      UnsupportedTemporalTypeException - フィールドがサポートされていない場合、または値の範囲がintを超えている場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • getLong

      public long getLong(TemporalField field)
      指定されたフィールドの値をこのインスタントからlongとして取得します。

      これは、指定されたフィールドの値についてこのインスタントに問い合せます。 値を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。

      フィールドがChronoFieldの場合、ここに問合せを実装します。 サポートされるフィールドは、この日付/時間に基づく有効な値を返します。 他のすべてのChronoFieldインスタンスはUnsupportedTemporalTypeExceptionをスローします。

      フィールドがChronoFieldではない場合、このメソッドの結果は、引数としてthisを渡してTemporalField.getFrom(TemporalAccessor)を呼び出すことにより取得されます。 値を取得できるかどうか、および値が何を表すかは、フィールドによって決まります。

      定義:
      インタフェースTemporalAccessorgetLong
      パラメータ:
      field - 取得するフィールド、null以外
      戻り値:
      フィールドの値
      例外:
      DateTimeException - フィールドの値を取得できない場合
      UnsupportedTemporalTypeException - フィールドがサポートされていない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • getEpochSecond

      public long getEpochSecond()
      Javaエポック1970-01-01T00:00:00Zからの秒数を取得します。

      エポック秒カウントは秒の単純な増分カウントで、0秒は1970-01-01T00:00:00Zです。 ナノ秒部分はgetNano()によって戻されます。

      戻り値:
      エポック1970-01-01T00:00:00Zからの秒数
    • getNano

      public int getNano()
      秒の始まりから時系列の後の方へのナノ秒数を取得します。

      ナノ秒秒値は、getEpochSecond()によって返された秒数からの総ナノ秒数を測定します。

      戻り値:
      秒の中のナノ秒、常に正、999,999,999を超えない
    • with

      public Instant with(TemporalAdjuster adjuster)
      このインスタントの調整済のコピーを返します。

      これは、このインスタントに基づいて、インスタントが調整された状態の、Instantを返します。 調整は、指定されたアジャスタ戦略オブジェクトを使用して行われます。 どのような調整が行われるかを理解するには、アジャスタのドキュメントを参照してください。

      このメソッドの結果は、指定されたアジャスタでthisを引数として渡してTemporalAdjuster.adjustInto(Temporal)メソッドを呼び出すことによって取得されます。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalwith
      パラメータ:
      adjuster - 使用するアジャスタ、null以外
      戻り値:
      調整が行われたthisに基づくInstant、nullでない
      例外:
      DateTimeException - 調整ができない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • with

      public Instant with(TemporalField field, long newValue)
      指定されたフィールドを新しい値に設定して、このインスタントのコピーを返します。

      これは、このインスタントに基づいて、指定されたフィールドの値が変更された状態の Instantを返します。 値を設定できない場合は、フィールドがサポートされていないか他の理由のために、例外がスローされます。

      フィールドがChronoFieldの場合は、調整はここで実装されます。 サポートされるフィールドは次のように動作します。

      • NANO_OF_SECOND - 指定された「1秒のうちのナノ秒」でInstantを返します。 エポック秒は変更されません。
      • MICRO_OF_SECOND - 指定された「1秒のうちのマイクロ秒」と1,000の積によって「1秒のうちのナノ秒」が置き換えられた状態の、Instantを返します。 エポック秒は変更されません。
      • MILLI_OF_SECOND - 指定された「1秒のうちのミリ秒」と1,000,000の積によって「1秒のうちのナノ秒」が置き換えられた状態の、Instantを返します。 エポック秒は変更されません。
      • INSTANT_SECONDS - 指定されたエポック秒でInstantを返します。 「1秒のうちのナノ秒」は変更されません。

      いずれの場合も、新しい値がフィールドの値の有効範囲外にあるとDateTimeExceptionがスローされます。

      他のすべてのChronoFieldインスタンスはUnsupportedTemporalTypeExceptionをスローします。

      フィールドがChronoFieldではない場合、このメソッドの結果は、thisを引数として渡してTemporalField.adjustInto(Temporal, long)を呼び出すことによって取得されます。 この場合、インスタントを調整するかどうかおよびどのように調整するかはフィールドによって決まります。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalwith
      パラメータ:
      field - 結果に設定するフィールド、null以外
      newValue - 結果のフィールドの新しい値
      戻り値:
      指定されたフィールドが設定されたthisに基づくInstant、nullでない
      例外:
      DateTimeException - フィールドを設定できない場合
      UnsupportedTemporalTypeException - フィールドがサポートされていない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • truncatedTo

      public Instant truncatedTo(TemporalUnit unit)
      指定された単位に切り捨てられた状態で、このInstantのコピーを返します。

      インスタントを切り捨てるとは、指定された単位よりも小さいフィールドがゼロに設定された状態で、オリジナルのコピーを返すことです。 フィールドは、toStringと同様にUTCオフセットの使用に基づいて計算されます。 たとえば、MINUTES単位で切り捨てると、もっとも近い分に切り捨てられ、秒とナノ秒はゼロに設定されます。

      単位は、標準日の長さを余りなしで等分するデュレーションを持つ必要があります。 これには、ChronoUnitDAYSで提供されるすべての時間単位が含まれます。 他の単位は例外をスローします。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      パラメータ:
      unit - 切り捨てを行う単位、nullでない
      戻り値:
      時間が切り捨てられたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 単位が切り捨てについて無効な場合
      UnsupportedTemporalTypeException - 単位がサポートされていない場合
    • plus

      public Instant plus(TemporalAmount amountToAdd)
      指定された量を加算した、このインスタントのコピーを返します。

      これは、このインスタントに基づいて、指定された量が加算された状態の、Instantを返します。 この量は通常Durationですが、TemporalAmountインタフェースを実装する他のどの型であってもかまいません。

      計算は、TemporalAmount.addTo(Temporal)を呼び出すことによって量オブジェクトに委譲されます。 量実装は加算を任意の方法で自由に実装できますが、通常はplus(long, TemporalUnit)にコールバックします。 正常に加算できるかどうかを判断するには、量実装のドキュメントを参照してください。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalplus
      パラメータ:
      amountToAdd - 加算する量、nullでない
      戻り値:
      加算が行われたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 加算できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plus

      public Instant plus(long amountToAdd, TemporalUnit unit)
      指定された量を加算した、このインスタントのコピーを返します。

      これは、このインスタントに基づいて、単位の量が加算された状態の、Instantを返します。 量を加算できない場合、単位がサポートされていないか他の理由のために、例外がスローされます。

      フィールドがChronoUnitの場合は、加算はここで実装されます。 サポートされるフィールドは次のように動作します。

      • NANOS - 指定されたナノ秒数が追加されたInstantを返します。 これはplusNanos(long)と同等です。
      • MICROS - 指定されたマイクロ秒数が追加されたInstantを返します。 これは、量が1,000倍されたplusNanos(long)と同等です。
      • MILLIS - 指定されたミリ秒数が追加されたInstantを返します。 これは、量が1,000,000倍されたplusNanos(long)と同等です。
      • SECONDS - 指定された秒数が追加されたInstantを返します。 これはplusSeconds(long)と同等です。
      • MINUTES - 指定された分数が追加されたInstantを返します。 これは、量が60倍されたplusSeconds(long)と同等です。
      • HOURS - 指定された時間数が追加されたInstantを返します。 これは、量が3,600倍されたplusSeconds(long)と同等です。
      • HALF_DAYS - 指定された半日の数が追加されたInstantを返します。 これは、量が43,200 (12時間)倍されたplusSeconds(long)と同等です。
      • DAYS - 指定した日数が追加されたInstantを返します。 これは、量が86,400 (24時間)倍されたplusSeconds(long)と同等です。

      他のすべてのChronoUnitインスタンスはUnsupportedTemporalTypeExceptionをスローします。

      フィールドがChronoUnitでない場合、このメソッドの結果は、thisを引数として渡してTemporalUnit.addTo(Temporal, long)を呼び出すことによって取得されます。 この場合、加算を実行するかどうかおよびどのように実行するかは単位によって決まります。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalplus
      パラメータ:
      amountToAdd - 結果に加算する単位の量、負も可
      unit - 加算する量の単位、nullでない
      戻り値:
      指定された量が加算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 加算できない場合
      UnsupportedTemporalTypeException - 単位がサポートされていない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plusSeconds

      public Instant plusSeconds(long secondsToAdd)
      このインスタントのコピーに指定された秒単位デュレーションを加算したものを返します。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      パラメータ:
      secondsToAdd - 加算する秒数、正または負
      戻り値:
      指定された秒数を加算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 結果が最大または最小インスタントを超える場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plusMillis

      public Instant plusMillis(long millisToAdd)
      このインスタントのコピーに指定されたミリ秒単位デュレーションを加算したものを返します。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      パラメータ:
      millisToAdd - 加算するミリ秒数、正または負
      戻り値:
      指定されたミリ秒が加算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 結果が最大または最小インスタントを超える場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • plusNanos

      public Instant plusNanos(long nanosToAdd)
      このインスタントのコピーに指定されたナノ秒単位デュレーションを加算したものを返します。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      パラメータ:
      nanosToAdd - 加算するナノ秒数、正または負
      戻り値:
      指定されたナノ秒が加算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 結果が最大または最小インスタントを超える場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minus

      public Instant minus(TemporalAmount amountToSubtract)
      このインスタントのコピーから指定された量を引いたものを返します。

      これは、このインスタントに基づいて、指定された量が減算された状態の、Instantを返します。 この量は通常Durationですが、TemporalAmountインタフェースを実装する他のどの型であってもかまいません。

      計算は、TemporalAmount.subtractFrom(Temporal)を呼び出すことによって量オブジェクトに委譲されます。 量実装は減算を任意の方法で自由に実装できますが、通常はminus(long, TemporalUnit)にコールバックします。 正常に減算できるかどうかを判断するには、量実装のドキュメントを参照してください。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalminus
      パラメータ:
      amountToSubtract - 減算する量、nullでない
      戻り値:
      減算が行われたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 減算ができない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minus

      public Instant minus(long amountToSubtract, TemporalUnit unit)
      このインスタントのコピーから指定された量を引いたものを返します。

      これは、単位を引いた量を引いたものに基づいて、これに基づいてInstantを返します。 量を減算できない場合、単位がサポートされていないか他の理由のために、例外がスローされます。

      このメソッドは、量を符号反転したplus(long, TemporalUnit)と同等です。 加算および減算がどのように行われるかについての詳しい説明は、そのメソッドを参照してください。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalminus
      パラメータ:
      amountToSubtract - 結果から減算する単位の量、負も可
      unit - 減算する量の単位、nullでない
      戻り値:
      指定された量が減算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 減算ができない場合
      UnsupportedTemporalTypeException - 単位がサポートされていない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minusSeconds

      public Instant minusSeconds(long secondsToSubtract)
      このインスタントのコピーから指定された秒単位デュレーションを引いたものを返します。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      パラメータ:
      secondsToSubtract - 減算する秒数、正または負
      戻り値:
      指定された秒数が減算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 結果が最大または最小インスタントを超える場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minusMillis

      public Instant minusMillis(long millisToSubtract)
      このインスタントのコピーから指定されたミリ秒単位デュレーションを引いたものを返します。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      パラメータ:
      millisToSubtract - 減算するミリ秒数、正または負
      戻り値:
      指定されたミリ秒が減算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 結果が最大または最小インスタントを超える場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • minusNanos

      public Instant minusNanos(long nanosToSubtract)
      このインスタントのコピーから指定されたナノ秒単位デュレーションを引いたものを返します。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      パラメータ:
      nanosToSubtract - 減算するナノ秒数、正または負
      戻り値:
      指定されたナノ秒が減算されたこのインスタントに基づくInstant、nullでない
      例外:
      DateTimeException - 結果が最大または最小インスタントを超える場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • query

      public <R> R query(TemporalQuery<R> query)
      指定された問合せを使用してこのインスタントを問い合わせます。

      これは、指定された問合せ戦略オブジェクトを使用してこのインスタントを照会します。 TemporalQueryオブジェクトは結果を取得するために使用するロジックを定義します。 このメソッドの結果を理解するには、問合せのドキュメントをお読みください。

      このメソッドの結果は、thisを引数として渡して、指定した問合せでTemporalQuery.queryFrom(TemporalAccessor)メソッドを呼び出すことによって取得します。

      定義:
      インタフェースTemporalAccessorquery
      型パラメータ:
      R - 結果の型
      パラメータ:
      query - 呼び出す問合せ、null以外
      戻り値:
      問合せ結果、nullが返されることがある(問合せによって定義される)
      例外:
      DateTimeException - 問い合わせできない場合(問合せによって定義される)
      ArithmeticException - 数値のオーバーフローが発生した場合(問合せによって定義される)
    • adjustInto

      public Temporal adjustInto(Temporal temporal)
      指定された時間的オブジェクトがこのインスタントを持つように調整します。

      これは、インスタントをこれと同じに変更した状態で、入力と同じ観察可能な型の時間的オブジェクトを返します。

      調整は、ChronoField.INSTANT_SECONDSChronoField.NANO_OF_SECONDをフィールドとして渡してTemporal.with(TemporalField, long)を2回を使用することと同等です。

      ほとんどのケースで、Temporal.with(TemporalAdjuster)を使用して、呼び出しパターンを逆にすると明確になります。

         // these two lines are equivalent, but the second approach is recommended
         temporal = thisInstant.adjustInto(temporal);
         temporal = temporal.with(thisInstant);
       

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporalAdjusteradjustInto
      パラメータ:
      temporal - 調整するターゲット・オブジェクト、null以外
      戻り値:
      調整されるオブジェクト、null以外
      例外:
      DateTimeException - 調整を実行できない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • until

      public long until(Temporal endExclusive, TemporalUnit unit)
      もう一方のインスタントまでの時間量を指定された単位で計算します。

      これは、単一TemporalUnitに基づいて2つのInstantオブジェクト間の時間量を計算します。 開始点と終了点は、このおよび指定されたインスタントです。 終了が開始より前である場合、結果は負になります。 計算は、2つのインスタント間の完全な単位の数を表す、整数を返します。 このメソッドに渡されるTemporalは、from(TemporalAccessor)を使用してInstantに変換されます。 たとえば、2つの日付の間の秒数は、startInstant.until(endInstant, SECONDS)を使用して計算できます。

      このメソッドを使用する等価な方法が2つあります。 1つ目はこのメソッドを呼び出すことです。 2つ目はTemporalUnit.between(Temporal, Temporal)を使用することです。

         // these two lines are equivalent
         amount = start.until(end, SECONDS);
         amount = SECONDS.between(start, end);
       
      この選択は、コードが読みやすくなるのはどちらかに基づいて行ってください。

      計算はChronoUnitのこのメソッドに実装します。 単位NANOSMICROSMILLISSECONDSMINUTESHOURSHALF_DAYSおよびDAYSがサポートされます。 その他のChronoUnit値は例外をスローします。

      単位がChronoUnitでない場合、このメソッドの結果は、thisを1つ目の引数として、変換される入力temporal (一時)を2つ目の引数として渡してTemporalUnit.between(Temporal, Temporal)を呼び出すことによって取得します。

      このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。

      定義:
      インタフェースTemporaluntil
      パラメータ:
      endExclusive - 終了日(これを含まない)、Instantに変換される、nullでない
      unit - 量を測定する単位、null以外
      戻り値:
      このインスタントと終了インスタントの間の時間量
      例外:
      DateTimeException - 量を計算できない場合、または終了TemporalをInstantに変換できない場合
      UnsupportedTemporalTypeException - 単位がサポートされていない場合
      ArithmeticException - 数値のオーバーフローが発生した場合
    • atOffset

      public OffsetDateTime atOffset(ZoneOffset offset)
      このインスタントとオフセットを組み合わせてOffsetDateTimeを作成します。

      これは、UTC/グリニッジからの指定されたオフセットでこのインスタントから作られたOffsetDateTimeを返します。 インスタントが大きすぎてオフセット日付/時間に収まらない場合は、例外がスローされます。

      このメソッドはOffsetDateTime.ofInstant(this, offset)と同等です。

      パラメータ:
      offset - 組み合わせるオフセット、nullでない
      戻り値:
      このインスタントと指定されたオフセットから作られたオフセット日付/時間、nullでない
      例外:
      DateTimeException - 結果がサポートされている範囲を超える場合
    • atZone

      public ZonedDateTime atZone(ZoneId zone)
      このインスタントとタイムゾーンを組み合わせてZonedDateTimeを作成します。

      これは、指定されたタイムゾーンでこのインスタントから作られたZonedDateTimeを返します。 インスタントが大きすぎてゾーン日付/時間に収まらない場合は、例外がスローされます。

      このメソッドはZonedDateTime.ofInstant(this, zone)と同等です。

      パラメータ:
      zone - 組み合わせるゾーン、nullでない
      戻り値:
      このインスタントと指定されたゾーンから作られたゾーン日付/時間、nullでない
      例外:
      DateTimeException - 結果がサポートされている範囲を超える場合
    • toEpochMilli

      public long toEpochMilli()
      このインスタントをエポック1970-01-01T00:00:00Zからのミリ秒数に変換します。

      このインスタントが表している時系列上の時点が遠すぎる未来または過去であるため、longミリ秒に収まらない場合は、例外がスローされます。

      このインスタントの精度がミリ秒精度より大きい場合は、ナノ秒の量が100万で整数除算されたかのように、変換によって余分な精度情報が捨てられます。

      戻り値:
      エポック1970-01-01T00:00:00Zからのミリ秒数
      例外:
      ArithmeticException - 数値のオーバーフローが発生した場合
    • compareTo

      public int compareTo(Instant otherInstant)
      このインスタントと指定されたインスタントを比較します。

      比較は、インスタントの時系列位置ベースです。 Comparableに定義されているとおりに、「equalsと一致」しています。

      定義:
      compareTo、インタフェースComparable<Instant>
      パラメータ:
      otherInstant - 比較する他方のインスタント、nullでない
      戻り値:
      コンパレータ値、小さい場合は負、大きい場合は正
      例外:
      NullPointerException - otherInstantがnullの場合。
    • isAfter

      public boolean isAfter(Instant otherInstant)
      このインスタントが指定されたインスタントの後かどうかをチェックします。

      比較は、インスタントの時系列位置ベースです。

      パラメータ:
      otherInstant - 比較する他方のインスタント、nullでない
      戻り値:
      このインスタントが指定されたインスタントの後にある場合はtrue
      例外:
      NullPointerException - otherInstantがnullの場合。
    • isBefore

      public boolean isBefore(Instant otherInstant)
      このインスタントが指定されたインスタントの前かどうかをチェックします。

      比較は、インスタントの時系列位置ベースです。

      パラメータ:
      otherInstant - 比較する他方のインスタント、nullでない
      戻り値:
      このインスタントが指定されたインスタントの前にある場合はtrue
      例外:
      NullPointerException - otherInstantがnullの場合。
    • equals

      public boolean equals(Object other)
      指定されたインスタントとこのインスタントが等しいかどうかをチェックします。

      比較は、インスタントの時系列位置ベースです。

      オーバーライド:
      equals、クラスObject
      パラメータ:
      other - 一方、NULLはfalseを返します
      戻り値:
      他方のインスタントがこのインスタントと等しい場合はtrue
      関連項目:
    • hashCode

      public int hashCode()
      このインスタントのハッシュ・コードを返します。
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      適切なハッシュ・コード
      関連項目:
    • toString

      public String toString()
      ISO-8601表現によるこのインスタントの文字列表現です。

      使用されるフォーマットはDateTimeFormatter.ISO_INSTANTと同じです。

      オーバーライド:
      toString、クラスObject
      戻り値:
      このインスタントのISO-8601表現、nullでない