- 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タイム・スケーツは、国際民間タイム・スケールに対する正確に定義された関係を持つ。
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タイム・スケールはすべての日付/時間クラスで使用されます。 これには
Instant
、LocalDate
、LocalTime
、OffsetDateTime
、ZonedDateTime
およびDuration
が含まれます。これは値ベースのクラスです。単位元に依存するオペレーション(参照型等価(
==
)、単位元ハッシュ・コード、同期化を含む)をInstant
のインスタンスで使用すると、予期しない結果が発生する場合があるため、使用しないことをお薦めします。 比較する場合は、equals
メソッドを使用することをお薦めします。- 実装要件:
- このクラスは不変でスレッドセーフです。
- 導入されたバージョン:
- 1.8
- 関連項目:
- 直列化された形式
-
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 Temporal
adjustInto(Temporal temporal)
指定された時間的オブジェクトがこのインスタントを持つように調整します。OffsetDateTime
atOffset(ZoneOffset offset)
このインスタントとオフセットを組み合わせてOffsetDateTime
を作成します。ZonedDateTime
atZone(ZoneId zone)
このインスタントとタイムゾーンを組み合わせてZonedDateTime
を作成します。int
compareTo(Instant otherInstant)
このインスタントと指定されたインスタントを比較します。boolean
equals(Object otherInstant)
指定されたインスタントとこのインスタントが等しいかどうかをチェックします。static Instant
from(TemporalAccessor temporal)
Instant
のインスタンスを時間的オブジェクトから取得します。int
get(TemporalField field)
指定されたフィールドの値をこのインスタントからint
として取得します。long
getEpochSecond()
Javaエポック1970-01-01T00:00:00Zからの秒数を取得します。long
getLong(TemporalField field)
指定されたフィールドの値をこのインスタントからlong
として取得します。int
getNano()
秒の始まりから時系列の後の方へのナノ秒数を取得します。int
hashCode()
このインスタントのハッシュ・コードを返します。boolean
isAfter(Instant otherInstant)
このインスタントが指定されたインスタントの後かどうかをチェックします。boolean
isBefore(Instant otherInstant)
このインスタントが指定されたインスタントの前かどうかをチェックします。boolean
isSupported(TemporalField field)
指定されたフィールドがサポートされているかどうかをチェックします。boolean
isSupported(TemporalUnit unit)
指定された単位がサポートされているかどうかをチェックします。Instant
minus(long amountToSubtract, TemporalUnit unit)
このインスタントのコピーから指定された量を引いたものを返します。Instant
minus(TemporalAmount amountToSubtract)
このインスタントのコピーから指定された量を引いたものを返します。Instant
minusMillis(long millisToSubtract)
このインスタントのコピーから指定されたミリ秒単位デュレーションを引いたものを返します。Instant
minusNanos(long nanosToSubtract)
このインスタントのコピーから指定されたナノ秒単位デュレーションを引いたものを返します。Instant
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
parse(CharSequence text)
Instant
のインスタンスをテキスト文字列(2007-12-03T10:15:30.00Z
など)から取得します。Instant
plus(long amountToAdd, TemporalUnit unit)
このインスタントのコピーに指定された量を加算したものを返します。Instant
plus(TemporalAmount amountToAdd)
このインスタントのコピーに指定された量を加算したものを返します。Instant
plusMillis(long millisToAdd)
このインスタントのコピーに指定されたミリ秒単位デュレーションを加算したものを返します。Instant
plusNanos(long nanosToAdd)
このインスタントのコピーに指定されたナノ秒単位デュレーションを加算したものを返します。Instant
plusSeconds(long secondsToAdd)
このインスタントのコピーに指定された秒単位デュレーションを加算したものを返します。<R> R
query(TemporalQuery<R> query)
指定された問合せを使用してこのインスタントを照会します。ValueRange
range(TemporalField field)
指定されたフィールドの有効な値の範囲を取得します。long
toEpochMilli()
このインスタントをエポック1970-01-01T00:00:00Zからのミリ秒数に変換します。String
toString()
ISO-8601表現によるこのインスタントの文字列表現です。Instant
truncatedTo(TemporalUnit unit)
指定された単位に切り捨てられた状態で、このInstant
のコピーを返します。long
until(Temporal endExclusive, TemporalUnit unit)
もう一方のインスタントまでの時間量を指定された単位で計算します。Instant
with(TemporalAdjuster adjuster)
このインスタントの調整済コピーを返します。Instant
with(TemporalField field, long newValue)
指定されたフィールドを新しい値に設定した状態で、このインスタントのコピーを返します。
-
-
-
フィールドの詳細
-
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)
Instant
のインスタンスをテキスト文字列(2007-12-03T10:15:30.00Z
など)から取得します。文字列はUTC内の有効なインスタントを表現している必要があり、
DateTimeFormatter.ISO_INSTANT
を使用して解析されます。- パラメータ:
text
- 解析するテキスト。null以外- 戻り値:
- 解析されたインスタント、nullでない
- 例外:
DateTimeParseException
- テキストが解析できない場合
-
isSupported
public boolean isSupported(TemporalField field)
指定されたフィールドがサポートされているかどうかをチェックします。これは、指定されたフィールドについてこのインスタントを照会できるかどうかをチェックします。 falseの場合、
range
、get
、およびwith(TemporalField, long)
メソッドの呼び出しは、例外をスローします。フィールドが
ChronoField
の場合、ここに問合せを実装します。 サポートされるフィールドは、次のとおりです。NANO_OF_SECOND
MICRO_OF_SECOND
MILLI_OF_SECOND
INSTANT_SECONDS
ChronoField
インスタンスはfalseを返します。フィールドが
ChronoField
でない場合、このメソッドの結果は、this
を引数として渡してTemporalField.isSupportedBy(TemporalAccessor)
を呼び出すことによって取得します。 フィールドがサポートされているかどうかはフィールドによって決定します。- 定義:
- インタフェース
TemporalAccessor
のisSupported
- パラメータ:
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)
を呼び出すことによって取得します。 単位がサポートされているかどうかは単位によって決定します。- 定義:
- インタフェース
Temporal
のisSupported
- パラメータ:
unit
- チェックする単位、nullはfalseを返す- 戻り値:
- 単位を加算/減算できる場合はtrue、できない場合はfalse
-
range
public ValueRange range(TemporalField field)
指定されたフィールドの有効な値の範囲を取得します。範囲オブジェクトはフィールドの有効な最小値と最大値を表します。 このインスタントは返される範囲の精度を高めるために使用されます。 範囲を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。
フィールドが
ChronoField
の場合、ここに問合せを実装します。サポートされるフィールド
は適切な範囲のインスタンスを返します。 他のすべてのChronoField
インスタンスはUnsupportedTemporalTypeException
をスローします。フィールドが
ChronoField
ではない場合、このメソッドの結果は、引数としてthis
を渡してTemporalField.rangeRefinedBy(TemporalAccessor)
を呼び出すことにより取得されます。 範囲を取得できるかどうかはフィールドによって決まります。- 定義:
- インタフェース
TemporalAccessor
のrange
- パラメータ:
field
- 範囲を問い合わせるフィールド、null以外- 戻り値:
- フィールドの有効値の範囲。null以外
- 例外:
DateTimeException
- フィールドの範囲を取得できない場合UnsupportedTemporalTypeException
- フィールドがサポートされていない場合
-
get
public int get(TemporalField field)
指定されたフィールドの値をこのインスタントからint
として取得します。これは、指定されたフィールドの値についてこのインスタントに問い合せます。 返される値は常にフィールドの値の有効な範囲内になります。 値を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。
フィールドが
ChronoField
の場合、ここに問合せを実装します。サポートされるフィールド
はこの日付/時間に基づく有効な値を返します。ただし、INSTANT_SECONDS
は除きます (大きすぎてint
に収まらず、DateTimeException
をスローする)。 他のすべてのChronoField
インスタンスはUnsupportedTemporalTypeException
をスローします。フィールドが
ChronoField
ではない場合、このメソッドの結果は、引数としてthis
を渡してTemporalField.getFrom(TemporalAccessor)
を呼び出すことにより取得されます。 値を取得できるかどうか、および値が何を表すかは、フィールドによって決まります。- 定義:
- インタフェース
TemporalAccessor
のget
- パラメータ:
field
- 取得するフィールド、null以外- 戻り値:
- フィールドの値
- 例外:
DateTimeException
- フィールドの値を取得できない場合、または値がフィールドの有効な値の範囲外の場合UnsupportedTemporalTypeException
- フィールドがサポートされていない場合、または値の範囲がint
を超えている場合ArithmeticException
- 数値のオーバーフローが発生した場合
-
getLong
public long getLong(TemporalField field)
指定されたフィールドの値をこのインスタントからlong
として取得します。これは、指定されたフィールドの値についてこのインスタントに問い合せます。 値を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。
フィールドが
ChronoField
の場合、ここに問合せを実装します。サポートされるフィールド
は、この日付/時間に基づく有効な値を返します。 他のすべてのChronoField
インスタンスはUnsupportedTemporalTypeException
をスローします。フィールドが
ChronoField
ではない場合、このメソッドの結果は、引数としてthis
を渡してTemporalField.getFrom(TemporalAccessor)
を呼び出すことにより取得されます。 値を取得できるかどうか、および値が何を表すかは、フィールドによって決まります。- 定義:
- インタフェース
TemporalAccessor
のgetLong
- パラメータ:
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)
メソッドを呼び出すことによって取得されます。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
Temporal
のwith
- パラメータ:
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)
を呼び出すことによって取得されます。 この場合、インスタントを調整するかどうかおよびどのように調整するかはフィールドによって決まります。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
Temporal
のwith
- パラメータ:
field
- 結果に設定するフィールド、null以外newValue
- 結果のフィールドの新しい値- 戻り値:
- 指定されたフィールドが設定された
this
に基づくInstant
、nullでない - 例外:
DateTimeException
- フィールドを設定できない場合UnsupportedTemporalTypeException
- フィールドがサポートされていない場合ArithmeticException
- 数値のオーバーフローが発生した場合
-
truncatedTo
public Instant truncatedTo(TemporalUnit unit)
指定された単位に切り捨てられた状態で、このInstant
のコピーを返します。インスタントを切り捨てるとは、指定された単位よりも小さいフィールドがゼロに設定された状態で、オリジナルのコピーを返すことです。 フィールドは、
toString
と同様にUTCオフセットの使用に基づいて計算されます。 たとえば、MINUTES
単位で切り捨てると、もっとも近い分に切り捨てられ、秒とナノ秒はゼロに設定されます。単位は、標準日の長さを余りなしで等分するデュレーションを持つ必要があります。 これには、
ChronoUnit
とDAYS
で提供されるすべての時間単位が含まれます。 他の単位は例外をスローします。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- パラメータ:
unit
- 切り捨てを行う単位、nullでない- 戻り値:
- 時間が切り捨てられたこのインスタントに基づく
Instant
、nullでない - 例外:
DateTimeException
- 単位が切り捨てについて無効な場合UnsupportedTemporalTypeException
- 単位がサポートされていない場合
-
plus
public Instant plus(TemporalAmount amountToAdd)
このインスタントのコピーに指定された量を加算したものを返します。これは、このインスタントに基づいて、指定された量が加算された状態の、
Instant
を返します。 この量は通常Duration
ですが、TemporalAmount
インタフェースを実装する他のどの型であってもかまいません。計算は、
TemporalAmount.addTo(Temporal)
を呼び出すことによって量オブジェクトに委譲されます。 量実装は加算を任意の方法で自由に実装できますが、通常はplus(long, TemporalUnit)
にコールバックします。 正常に加算できるかどうかを判断するには、量実装のドキュメントを参照してください。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
Temporal
のplus
- パラメータ:
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)
を呼び出すことによって取得されます。 この場合、加算を実行するかどうかおよびどのように実行するかは単位によって決まります。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
Temporal
のplus
- パラメータ:
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)
にコールバックします。 正常に減算できるかどうかを判断するには、量実装のドキュメントを参照してください。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
Temporal
のminus
- パラメータ:
amountToSubtract
- 減算する量、nullでない- 戻り値:
- 減算が行われたこのインスタントに基づく
Instant
、nullでない - 例外:
DateTimeException
- 減算ができない場合ArithmeticException
- 数値のオーバーフローが発生した場合
-
minus
public Instant minus(long amountToSubtract, TemporalUnit unit)
このインスタントのコピーから指定された量を引いたものを返します。これは、単位を引いた量を引いたものに基づいて、これに基づいて
Instant
を返します。 量を減算できない場合、単位がサポートされていないか他の理由のために、例外がスローされます。このメソッドは、量を符号反転した
plus(long, TemporalUnit)
と同等です。 加算および減算がどのように行われるかについての詳しい説明は、そのメソッドを参照してください。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
Temporal
のminus
- パラメータ:
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)
メソッドを呼び出すことによって取得します。- 定義:
- インタフェース
TemporalAccessor
のquery
- 型パラメータ:
R
- 結果の型- パラメータ:
query
- 呼び出す問合せ、null以外- 戻り値:
- 問合せ結果、nullが返されることがある(問合せによって定義される)
- 例外:
DateTimeException
- 問い合わせできない場合(問合せによって定義される)ArithmeticException
- 数値のオーバーフローが発生した場合(問合せによって定義される)
-
adjustInto
public Temporal adjustInto(Temporal temporal)
指定された時間的オブジェクトがこのインスタントを持つように調整します。これは、インスタントをこれと同じに変更した状態で、入力と同じ観察可能な型の時間的オブジェクトを返します。
調整は、
ChronoField.INSTANT_SECONDS
とChronoField.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);
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
TemporalAdjuster
のadjustInto
- パラメータ:
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
のこのメソッドに実装します。 単位NANOS
、MICROS
、MILLIS
、SECONDS
、MINUTES
、HOURS
、HALF_DAYS
およびDAYS
がサポートされます。 その他のChronoUnit
値は例外をスローします。単位が
ChronoUnit
でない場合、このメソッドの結果は、this
を1つ目の引数として、変換される入力temporal (一時)を2つ目の引数として渡してTemporalUnit.between(Temporal, Temporal)
を呼び出すことによって取得します。このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
- 定義:
- インタフェース
Temporal
のuntil
- パラメータ:
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 otherInstant)
指定されたインスタントとこのインスタントが等しいかどうかをチェックします。比較は、インスタントの時系列位置ベースです。
- オーバーライド:
equals
、クラスObject
- パラメータ:
otherInstant
- 他方のインスタント、nullはfalseを返す- 戻り値:
- 他方のインスタントがこのインスタントと等しい場合はtrue
- 関連項目:
Object.hashCode()
、HashMap
-
hashCode
public int hashCode()
このインスタントのハッシュ・コードを返します。- オーバーライド:
hashCode
、クラスObject
- 戻り値:
- 適切なハッシュ・コード
- 関連項目:
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
toString
public String toString()
ISO-8601表現によるこのインスタントの文字列表現です。使用されるフォーマットは
DateTimeFormatter.ISO_INSTANT
と同じです。
-
-