public final class Instant extends Object implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable
このクラスは時系列上の単一時点をモデル化します。これは、イベントタイムスタンプをアプリケーションに記録するために使用できます。
実用性のために、インスタントはいくつかの制約で保存されます。測定可能な時系列は、long
に保持できる秒数に制限されます。これは、宇宙の現在の推定年齢よりも大きいです。インスタントはナノ秒分解能に保存されます。
インスタントの範囲は、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タイム・スケール・セグメントが定義される必要があります。各セグメントはこれらの要件を満たす必要があります。
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
メソッドを使用することをお薦めします。
修飾子と型 | フィールドと説明 |
---|---|
static Instant |
EPOCH
1970-01-01T00:00:00Zエポック・インスタントの定数。
|
static Instant |
MAX
サポートされる最大
Instant 、1000000000-12-31T23:59:59.999999999Z。 |
static Instant |
MIN
サポートされる最小
Instant 、-1000000000-01-01T00:00Z。 |
修飾子と型 | メソッドと説明 |
---|---|
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)
指定されたフィールドを新しい値に設定した状態で、このインスタントのコピーを返します。
|
public static final Instant EPOCH
public static final Instant MIN
Instant
、-1000000000-01-01T00:00Z。これは、遠い過去のインスタントとしてアプリケーションで使用できます。
これは、最小LocalDateTime
の1年前です。これにより、ローカル日付/時間に加えてインスタントに影響するZoneOffset
の範囲を扱うために十分な値が提供されます。この値は、年の値がint
に収まるようにも選択されます。
public static final Instant MAX
Instant
、1000000000-12-31T23:59:59.999999999Z。これは、遠い未来のインスタントとしてアプリケーションで使用できます。
これは、最大LocalDateTime
の1年後です。これにより、ローカル日付/時間に加えてインスタントに影響するZoneOffset
の範囲を扱うために十分な値が提供されます。この値は、年の値がint
に収まるようにも選択されます。
public static Instant now()
これは、システムUTCクロック
を照会して現在のインスタントを取得します。
このメソッドを使用すると、テストで代替時間ソースを使用できなくなります。実際はクロックがハードコードされているためです。
public static Instant now(Clock clock)
これは、指定されたクロックを照会して現在の時間を取得します。
このメソッドを使用すると、テストに代替のクロックを使用できます。代替のクロックはdependency injection
を使用して導入できます。
clock
- 使用するクロック、null以外public static Instant ofEpochSecond(long epochSecond)
Instant
のインスタンスをエポック1970-01-01T00:00:00Zからの秒数を使用して取得します。
ナノ秒フィールドはゼロに設定されます。
epochSecond
- 1970-01-01T00:00:00Zからの秒数DateTimeException
- インスタントが最大または最小インスタントを超える場合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
- 秒数に対するナノ秒調整、正または負DateTimeException
- インスタントが最大または最小インスタントを超える場合ArithmeticException
- 数値のオーバーフローが発生した場合public static Instant ofEpochMilli(long epochMilli)
Instant
のインスタンスをエポック1970-01-01T00:00:00Zからのミリ秒数を使用して取得します。
秒とナノ秒が、指定されたミリ秒から抽出されます。
epochMilli
- 1970-01-01T00:00:00Zからのミリ秒数DateTimeException
- インスタントが最大または最小インスタントを超える場合public static Instant from(TemporalAccessor temporal)
Instant
のインスタンスを時間的オブジェクトから取得します。
これは、指定された時間的オブジェクトに基づいてインスタントを取得します。TemporalAccessor
は日付/時間情報の任意セットを表し、このファクトリはこれをInstant
のインスタンスに変換します。
この変換はINSTANT_SECONDS
およびNANO_OF_SECOND
フィールドを抽出します。
このメソッドは関数型インタフェースTemporalQuery
のシグネチャに一致するため、メソッド参照Instant::from
経由の問合せとして使用できます。
temporal
- 変換する一時オブジェクト、null以外DateTimeException
- Instant
に変換できない場合public static Instant parse(CharSequence text)
Instant
のインスタンスをテキスト文字列(2007-12-03T10:15:30.00Z
など)から取得します。
文字列はUTC内の有効なインスタントを表現している必要があり、DateTimeFormatter.ISO_INSTANT
を使用して解析されます。
text
- 解析するテキスト。null以外DateTimeParseException
- テキストが解析できない場合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を返す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を返すpublic ValueRange range(TemporalField field)
範囲オブジェクトはフィールドの有効な最小値と最大値を表します。このインスタントは返される範囲の精度を高めるために使用されます。範囲を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。
フィールドがChronoField
の場合、ここに問合せを実装します。サポートされるフィールド
は適切な範囲のインスタンスを返します。他のすべてのChronoField
インスタンスはUnsupportedTemporalTypeException
をスローします。
フィールドがChronoField
ではない場合、このメソッドの結果は、引数としてthis
を渡してTemporalField.rangeRefinedBy(TemporalAccessor)
を呼び出すことにより取得されます。範囲を取得できるかどうかはフィールドによって決まります。
TemporalAccessor
のrange
field
- 範囲を問い合わせるフィールド、null以外DateTimeException
- フィールドの範囲を取得できない場合UnsupportedTemporalTypeException
- フィールドがサポートされていない場合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
- 数値のオーバーフローが発生した場合public long getLong(TemporalField field)
long
として取得します。
これは、指定されたフィールドの値についてこのインスタントを照会します。値を返せない場合は、フィールドがサポートされていないか他のなんらかの理由で、例外がスローされます。
フィールドがChronoField
の場合、ここに問合せを実装します。サポートされるフィールド
は、この日付/時間に基づく有効な値を返します。他のすべてのChronoField
インスタンスはUnsupportedTemporalTypeException
をスローします。
フィールドがChronoField
ではない場合、このメソッドの結果は、引数としてthis
を渡してTemporalField.getFrom(TemporalAccessor)
を呼び出すことにより取得されます。値を取得できるかどうか、および値が何を表すかは、フィールドによって決まります。
TemporalAccessor
のgetLong
field
- 取得するフィールド、null以外DateTimeException
- フィールドの値を取得できない場合UnsupportedTemporalTypeException
- フィールドがサポートされていない場合ArithmeticException
- 数値のオーバーフローが発生した場合public long getEpochSecond()
エポック秒カウントは秒の単純な増分カウントで、0秒は1970-01-01T00:00:00Zです。日のナノ秒部分はgetNanosOfSecond
で返されます。
public int getNano()
「1秒のうちのナノ秒」値は、getEpochSecond
によって返された秒からナノ秒の合計数を測定します。
public Instant with(TemporalAdjuster adjuster)
これは、このインスタントに基づいて、インスタントが調整された状態の、Instant
を返します。調整は、指定されたアジャスタ戦略オブジェクトを使用して行われます。どのような調整が行われるかを理解するには、アジャスタのドキュメントを参照してください。
このメソッドの結果は、指定されたアジャスタでthis
を引数として渡してTemporalAdjuster.adjustInto(Temporal)
メソッドを呼び出すことによって取得されます。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
Temporal
のwith
adjuster
- 使用するアジャスタ、null以外this
に基づくInstant
、nullでないDateTimeException
- 調整ができない場合ArithmeticException
- 数値のオーバーフローが発生した場合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
- 数値のオーバーフローが発生した場合public Instant truncatedTo(TemporalUnit unit)
Instant
のコピーを返します。
インスタントを切り捨てるとは、指定された単位よりも小さいフィールドがゼロに設定された状態で、オリジナルのコピーを返すことです。フィールドは、toString
と同様にUTCオフセットの使用に基づいて計算されます。たとえば、MINUTES
単位で切り捨てると、もっとも近い分に切り捨てられ、秒とナノ秒はゼロに設定されます。
単位は、標準日の長さを余りなしで等分するデュレーションを持つ必要があります。これには、ChronoUnit
とDAYS
で提供されるすべての時間単位が含まれます。他の単位は例外をスローします。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
unit
- 切り捨てを行う単位、nullでないInstant
、nullでないDateTimeException
- 単位が切り捨てについて無効な場合UnsupportedTemporalTypeException
- 単位がサポートされていない場合public Instant plus(TemporalAmount amountToAdd)
これは、このインスタントに基づいて、指定された量が加算された状態の、Instant
を返します。この量は通常Duration
ですが、TemporalAmount
インタフェースを実装する他のどの型であってもかまいません。
計算は、TemporalAmount.addTo(Temporal)
を呼び出すことによって量オブジェクトに委譲されます。量実装は加算を任意の方法で自由に実装できますが、通常はplus(long, TemporalUnit)
にコールバックします。正常に加算できるかどうかを判断するには、量実装のドキュメントを参照してください。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
Temporal
のplus
amountToAdd
- 加算する量、nullでないInstant
、nullでないDateTimeException
- 加算できない場合ArithmeticException
- 数値のオーバーフローが発生した場合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
- 数値のオーバーフローが発生した場合public Instant plusSeconds(long secondsToAdd)
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
secondsToAdd
- 加算する秒数、正または負Instant
、nullでないDateTimeException
- 結果が最大または最小インスタントを超える場合ArithmeticException
- 数値のオーバーフローが発生した場合public Instant plusMillis(long millisToAdd)
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
millisToAdd
- 加算するミリ秒数、正または負Instant
、nullでないDateTimeException
- 結果が最大または最小インスタントを超える場合ArithmeticException
- 数値のオーバーフローが発生した場合public Instant plusNanos(long nanosToAdd)
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
nanosToAdd
- 加算するナノ秒数、正または負Instant
、nullでないDateTimeException
- 結果が最大または最小インスタントを超える場合ArithmeticException
- 数値のオーバーフローが発生した場合public Instant minus(TemporalAmount amountToSubtract)
これは、このインスタントに基づいて、指定された量が減算された状態の、Instant
を返します。この量は通常Duration
ですが、TemporalAmount
インタフェースを実装する他のどの型であってもかまいません。
計算は、TemporalAmount.subtractFrom(Temporal)
を呼び出すことによって量オブジェクトに委譲されます。量実装は減算を任意の方法で自由に実装できますが、通常はminus(long, TemporalUnit)
にコールバックします。正常に減算できるかどうかを判断するには、量実装のドキュメントを参照してしてください。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
Temporal
のminus
amountToSubtract
- 減算する量、nullでないInstant
、nullでないDateTimeException
- 減算ができない場合ArithmeticException
- 数値のオーバーフローが発生した場合public Instant minus(long amountToSubtract, TemporalUnit unit)
これは、このインスタントに基づいて、単位の量が減算された状態の、Instant
を返します。量を減算できない場合、単位がサポートされていないか他の理由のために、例外がスローされます。
このメソッドは、量を符号反転したplus(long, TemporalUnit)
と同等です。加算および減算がどのように行われるかについての詳しい説明は、そのメソッドを参照してください。
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
Temporal
のminus
amountToSubtract
- 結果から減算する単位の量、負も可unit
- 減算する量の単位、nullでないInstant
、nullでないDateTimeException
- 減算ができない場合UnsupportedTemporalTypeException
- 単位がサポートされていない場合ArithmeticException
- 数値のオーバーフローが発生した場合public Instant minusSeconds(long secondsToSubtract)
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
secondsToSubtract
- 減算する秒数、正または負Instant
、nullでないDateTimeException
- 結果が最大または最小インスタントを超える場合ArithmeticException
- 数値のオーバーフローが発生した場合public Instant minusMillis(long millisToSubtract)
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
millisToSubtract
- 減算するミリ秒数、正または負Instant
、nullでないDateTimeException
- 結果が最大または最小インスタントを超える場合ArithmeticException
- 数値のオーバーフローが発生した場合public Instant minusNanos(long nanosToSubtract)
このインスタンスは不変で、このメソッド呼び出しによって影響を受けません。
nanosToSubtract
- 減算するナノ秒数、正または負Instant
、nullでないDateTimeException
- 結果が最大または最小インスタントを超える場合ArithmeticException
- 数値のオーバーフローが発生した場合public <R> R query(TemporalQuery<R> query)
これは、指定された問合せ戦略オブジェクトを使用してこのインスタントを照会します。TemporalQuery
オブジェクトは結果を取得するために使用するロジックを定義します。このメソッドの結果を理解するには、問合せのドキュメントをお読みください。
このメソッドの結果は、this
を引数として渡して、指定した問合せでTemporalQuery.queryFrom(TemporalAccessor)
メソッドを呼び出すことによって取得します。
TemporalAccessor
のquery
R
- 結果の型query
- 呼び出す問合せ、null以外DateTimeException
- 問い合わせできない場合(問合せによって定義される)ArithmeticException
- 数値のオーバーフローが発生した場合(問合せによって定義される)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以外DateTimeException
- 調整を実行できない場合ArithmeticException
- 数値のオーバーフローが発生した場合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
- 数値のオーバーフローが発生した場合public OffsetDateTime atOffset(ZoneOffset offset)
OffsetDateTime
を作成します。
これは、UTC/グリニッジからの指定されたオフセットでこのインスタントから作られたOffsetDateTime
を返します。インスタントが大きすぎてオフセット日付/時間に収まらない場合は、例外がスローされます。
このメソッドはOffsetDateTime.ofInstant(this, offset)
と同等です。
offset
- 組み合わせるオフセット、nullでないDateTimeException
- 結果がサポートされている範囲を超える場合public ZonedDateTime atZone(ZoneId zone)
ZonedDateTime
を作成します。
これは、指定されたタイムゾーンでこのインスタントから作られたZonedDateTime
を返します。インスタントが大きすぎてゾーン日付/時間に収まらない場合は、例外がスローされます。
このメソッドはZonedDateTime.ofInstant(this, zone)
と同等です。
zone
- 組み合わせるゾーン、nullでないDateTimeException
- 結果がサポートされている範囲を超える場合public long toEpochMilli()
このインスタントが表している時系列上の時点が遠すぎる未来または過去であるため、long
ミリ秒に収まらない場合は、例外がスローされます。
このインスタントの精度がミリ秒精度より大きい場合は、ナノ秒の量が100万で整数除算されたかのように、変換によって余分な精度情報が捨てられます。
ArithmeticException
- 数値のオーバーフローが発生した場合public int compareTo(Instant otherInstant)
比較は、インスタントの時系列位置ベースです。Comparable
に定義されているとおりに、「equalsと一致」しています。
compareTo
、インタフェース: Comparable<Instant>
otherInstant
- 比較する他方のインスタント、nullでないNullPointerException
- otherInstantがnullの場合。public boolean isAfter(Instant otherInstant)
比較は、インスタントの時系列位置ベースです。
otherInstant
- 比較する他方のインスタント、nullでないNullPointerException
- otherInstantがnullの場合。public boolean isBefore(Instant otherInstant)
比較は、インスタントの時系列位置ベースです。
otherInstant
- 比較する他方のインスタント、nullでないNullPointerException
- otherInstantがnullの場合。public boolean equals(Object otherInstant)
比較は、インスタントの時系列位置ベースです。
equals
、クラス: Object
otherInstant
- 他方のインスタント、nullはfalseを返すObject.hashCode()
、HashMap
public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String toString()
使用されるフォーマットはDateTimeFormatter.ISO_INSTANT
と同じです。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.