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

クラスYearMonth

  • すべての実装されたインタフェース:
    Serializable, Comparable<YearMonth>, Temporal, TemporalAccessor, TemporalAdjuster

    public final class YearMonth
    extends Object
    implements Temporal, TemporalAdjuster, Comparable<YearMonth>, Serializable
    ISO-8601暦体系における年月(2007-12など)。

    YearMonthは、年と月の組合せを表す不変の日付/時間オブジェクトです。 年と月から生成できるすべてのフィールド(四半期など)を取得できます。

    このクラスでは、日、時間、またはタイムゾーンを格納したり表現したりしません。 たとえば、「October 2007」という値をYearMonthに格納できます。

    ISO-8601暦体系は、世界中の大部分で現在使われている近代の常用暦体系です。 これは、現在のうるう年のルールがすべての時間に適用される、先発グレゴリオ暦体系と同等です。 今日作成されているほとんどのアプリケーションには、ISO-8601のルールが完全に適しています。 ただし、歴史的な日付を使用し、それらが正確であることを必要とするアプリケーションには、ISO-8601の方法が適さないことがわかります。

    これは値ベースのクラスです。YearMonthのインスタンスに対して、アイデンティティの影響を受けやすい操作(参照型等価演算子(==)、アイデンティティ・ハッシュ・コード、同期化など)を使用すると、予測できない結果が生じることがあるため、使わないようにしてください。 比較する場合は、equalsメソッドを使用することをお薦めします。

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

      すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      Temporal adjustInto​(Temporal temporal)
      指定された時間的オブジェクトをこの年/月になるように調整します。
      LocalDate atDay​(int dayOfMonth)
      この年-月を「月の日」と組み合せてLocalDateを作成します。
      LocalDate atEndOfMonth()
      その月の終わりのLocalDateを返します。
      int compareTo​(YearMonth other)
      この年-月をもう一方の年-月と比較します。
      boolean equals​(Object obj)
      この年-月がもう一方の年-月と等しいかどうかを確認します。
      String format​(DateTimeFormatter formatter)
      指定されたフォーマッタを使用してこの年-月を書式設定します。
      static YearMonth from​(TemporalAccessor temporal)
      時間的オブジェクトからYearMonthのインスタンスを取得します。
      int get​(TemporalField field)
      この年/月から指定されたフィールドの値をintとして取得します。
      long getLong​(TemporalField field)
      この年/月から指定されたフィールドの値をlongとして取得します。
      Month getMonth()
      列挙型Monthを使用して、月フィールドを取得します。
      int getMonthValue()
      月フィールドを取得します(1-12)。
      int getYear()
      年フィールドを取得します。
      int hashCode()
      この年-月のハッシュ・コードです。
      boolean isAfter​(YearMonth other)
      この年/月が、指定された年/月より後にあるかどうかをチェックします。
      boolean isBefore​(YearMonth other)
      この年/月が、指定された年/月より前にあるかどうかをチェックします。
      boolean isLeapYear()
      ISO先発暦体系のルールに従って、年がうるう年であるかどうかをチェックします。
      boolean isSupported​(TemporalField field)
      指定されたフィールドがサポートされているかどうかをチェックします。
      boolean isSupported​(TemporalUnit unit)
      指定された単位がサポートされているかどうかをチェックします。
      boolean isValidDay​(int dayOfMonth)
      「月の日」がこの年-月に対して有効であるかどうかを確認します。
      int lengthOfMonth()
      年を考慮に入れて、月の長さを返します。
      int lengthOfYear()
      年の長さを返します。
      YearMonth minus​(long amountToSubtract, TemporalUnit unit)
      指定された量を減算して、この年/月のコピーを返します。
      YearMonth minus​(TemporalAmount amountToSubtract)
      指定された量を減算して、この年/月のコピーを返します。
      YearMonth minusMonths​(long monthsToSubtract)
      指定された月数を減算した、このYearMonthのコピーを返します。
      YearMonth minusYears​(long yearsToSubtract)
      指定された年数を減算した、このYearMonthのコピーを返します。
      static YearMonth now()
      デフォルトのタイムゾーンのシステム・クロックから現在の年-月を取得します。
      static YearMonth now​(Clock clock)
      指定されたクロックから現在の年-月を取得します。
      static YearMonth now​(ZoneId zone)
      指定されたタイムゾーンのシステム・クロックから現在の年-月を取得します。
      static YearMonth of​(int year, int month)
      年および月からYearMonthのインスタンスを取得します。
      static YearMonth of​(int year, Month month)
      年および月からYearMonthのインスタンスを取得します。
      static YearMonth parse​(CharSequence text)
      2007-12などのテキスト文字列からYearMonthのインスタンスを取得します。
      static YearMonth parse​(CharSequence text, DateTimeFormatter formatter)
      特定のフォーマッタを使用して、テキスト文字列からYearMonthのインスタンスを取得します。
      YearMonth plus​(long amountToAdd, TemporalUnit unit)
      指定された量を加算して、この年/月のコピーを返します。
      YearMonth plus​(TemporalAmount amountToAdd)
      指定された量を加算して、この年/月のコピーを返します。
      YearMonth plusMonths​(long monthsToAdd)
      指定された月数を加算した、このYearMonthのコピーを返します。
      YearMonth plusYears​(long yearsToAdd)
      指定された年数を加算した、このYearMonthのコピーを返します。
      <R> R query​(TemporalQuery<R> query)
      指定された問合せを使用してこの年/月を問い合せます。
      ValueRange range​(TemporalField field)
      指定されたフィールドの有効な値の範囲を取得します。
      String toString()
      この年-月をStringとして出力します(2007-12など)。
      long until​(Temporal endExclusive, TemporalUnit unit)
      別の年/月までの時間量を指定された単位で計算します。
      YearMonth with​(TemporalAdjuster adjuster)
      この年/月の調整済のコピーを返します。
      YearMonth with​(TemporalField field, long newValue)
      指定されたフィールドを新しい値に設定して、この年/月のコピーを返します。
      YearMonth withMonth​(int month)
      月を変更して、このYearMonthのコピーを返します。
      YearMonth withYear​(int year)
      年を変更して、このYearMonthのコピーを返します。
    • メソッドの詳細

      • now

        public static YearMonth now()
        デフォルトのタイムゾーンのシステム・クロックから現在の年-月を取得します。

        これは、デフォルトのタイムゾーンのシステム・クロックを問い合わせて、現在の年-月を取得します。

        このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。

        戻り値:
        システム・クロックとデフォルトのタイムゾーンを使用した現在の年-月。null以外
      • now

        public static YearMonth now​(ZoneId zone)
        指定されたタイムゾーンのシステム・クロックから現在の年-月を取得します。

        これは、システム・クロックを問い合わせて現在の年-月を取得します。 タイムゾーンを指定すると、デフォルトのタイムゾーンへの依存を避けられます。

        このメソッドを使用すると、クロックがハードコードされているため、テストに代替のクロックを使用できないようにします。

        パラメータ:
        zone - 使用するゾーンID、null以外
        戻り値:
        システム・クロックを使用した現在の年-月。null以外
      • now

        public static YearMonth now​(Clock clock)
        指定されたクロックから現在の年-月を取得します。

        これは、指定されたクロックを問い合わせて現在の年-月を取得します。 このメソッドを使用すると、テストに代替のクロックを使用できます。 代替のクロックはdependency injectionを使用して導入できます。

        パラメータ:
        clock - 使用するクロック、null以外
        戻り値:
        現在の年-月。null以外
      • of

        public static YearMonth of​(int year,
                                   Month month)
        年および月からYearMonthのインスタンスを取得します。
        パラメータ:
        year - 表す年(MIN_YEARからMAX_YEARまで)
        month - 表される月。null以外
        戻り値:
        年-月。null以外
        例外:
        DateTimeException - 年の値が無効である場合
      • of

        public static YearMonth of​(int year,
                                   int month)
        年および月からYearMonthのインスタンスを取得します。
        パラメータ:
        year - 表す年(MIN_YEARからMAX_YEARまで)
        month - 表される月。1(1月)-12(12月)
        戻り値:
        年-月。null以外
        例外:
        DateTimeException - どちらかのフィールド値が無効である場合
      • from

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

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

        この変換では、YEARおよびMONTH_OF_YEARフィールドを抽出します。 この抽出が許可されるのは、時間的オブジェクトにISOの暦が含まれているか、そのオブジェクトをLocalDateに変換できる場合にかぎられます。

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

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

        public static YearMonth parse​(CharSequence text)
        2007-12などのテキスト文字列からYearMonthのインスタンスを取得します。

        この文字列は有効な年-月を表している必要があります。 フォーマットはuuuu-MMである必要があります。 0000-9999の範囲外にある年の前には、プラスまたはマイナス記号を付ける必要があります。

        パラメータ:
        text - 「2007-12」などの解析対象のテキスト。null以外
        戻り値:
        解析された年-月。null以外
        例外:
        DateTimeParseException - テキストが解析できない場合
      • parse

        public static YearMonth parse​(CharSequence text,
                                      DateTimeFormatter formatter)
        特定のフォーマッタを使用して、テキスト文字列からYearMonthのインスタンスを取得します。

        そのテキストがフォーマッタを使って解析され、年-月が返されます。

        パラメータ:
        text - 解析するテキスト。null以外
        formatter - 使用するフォーマッタ、null以外
        戻り値:
        解析された年-月。null以外
        例外:
        DateTimeParseException - テキストが解析できない場合
      • isSupported

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

        これは、指定されたフィールドをこの年-月に問い合わせることができるかどうかを確認します。 falseの場合、rangeget、およびwith(TemporalField, long)メソッドの呼び出しは、例外をスローします。

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

        • MONTH_OF_YEAR
        • PROLEPTIC_MONTH
        • YEAR_OF_ERA
        • YEAR
        • ERA
        他のすべての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の場合、問合せはここで実装されます。 サポートされる単位は次のとおりです。

        • MONTHS
        • YEARS
        • DECADES
        • CENTURIES
        • MILLENNIA
        • ERAS
        他のすべての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の場合、ここに問合せを実装します。 サポートされているフィールドはこの年-月に基づいて有効な値を返します。ただし、PROLEPTIC_MONTHは長すぎて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 - 数値のオーバーフローが発生した場合
      • getYear

        public int getYear()
        年フィールドを取得します。

        このメソッドは、年を表すプリミティブなint値を返します。

        このメソッドで返される年は、get(YEAR)のように予期的なものです。

        戻り値:
        年。MIN_YEARからMAX_YEARまで
      • getMonthValue

        public int getMonthValue()
        月フィールドを取得します(1-12)。

        このメソッドは、月を1-12のintとして返します。 getMonth()を呼び出すことで列挙型Monthが使用される場合は、アプリケーション・コードがより明確になることが多くなります。

        戻り値:
        月(1-12)
        関連項目:
        getMonth()
      • getMonth

        public Month getMonth()
        列挙型Monthを使用して、月フィールドを取得します。

        このメソッドは、月を表す列挙型Monthを返します。 これによって、int値が意味する内容に関する混乱を回避できます。 プリミティブなint値にアクセスする必要がある場合、この列挙型はint値を提供します。

        戻り値:
        月。null以外
        関連項目:
        getMonthValue()
      • isLeapYear

        public boolean isLeapYear()
        ISO先発暦体系のルールに従って、年がうるう年であるかどうかをチェックします。

        このメソッドは、時系列全体にわたって、うるう年の現在のルールを適用します。 一般に、年は4で割り切れる場合にうるう年です。 ただし、400で割り切れる年を除き、100で割り切れる年はうるう年ではありません。

        たとえば、1904年は4で割り切れるうるう年です。1900年は100で割り切れるため、うるう年ではありませんでしたが、2000年は400で割り切れるため、うるう年でした。

        計算は先発暦で、遠い将来および遠い過去にも同じルールが適用されます。 これは歴史的には正確ではありませんが、ISO-8601規格には正確です。

        戻り値:
        年がうるう年の場合はtrue、それ以外の場合はfalse
      • isValidDay

        public boolean isValidDay​(int dayOfMonth)
        「月の日」がこの年-月に対して有効であるかどうかを確認します。

        このメソッドは、この年と月、および入力された日から有効な日付が形成されるかどうかを確認します。

        パラメータ:
        dayOfMonth - 検証対象の「月の日」(1-31)。無効な値はfalseを返す
        戻り値:
        その日がこの年-月に対して有効である場合はtrue
      • lengthOfMonth

        public int lengthOfMonth()
        年を考慮に入れて、月の長さを返します。

        これは月の長さを日数で返します。 たとえば、1月の日付は31を返します。

        戻り値:
        その月の長さ(日数)。28-31
      • lengthOfYear

        public int lengthOfYear()
        年の長さを返します。

        これは、その年の長さを日数(365または366)で返します。

        戻り値:
        その年がうるう年の場合は366、それ以外の場合は365
      • with

        public YearMonth with​(TemporalAdjuster adjuster)
        この年/月の調整済のコピーを返します。

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

        単純なアジャスタは、年フィールドなどの1つのフィールドだけを設定するなどです。 より複雑なアジャスタは、年-月をハレー彗星が次回地球を通過する月に設定できます。

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

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

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

        public YearMonth with​(TemporalField field,
                              long newValue)
        指定されたフィールドを新しい値に設定して、この年/月のコピーを返します。

        これは、指定されたフィールドの値を変更して、この年-月に基づくYearMonthを返します。 これを使用すると、年または月などのサポートされているフィールドを変更できます。 値を設定できない場合は、フィールドがサポートされていないか他の理由のために、例外がスローされます。

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

        • MONTH_OF_YEAR - 指定された月を含むYearMonthを返します。 その年は変更されません。
        • PROLEPTIC_MONTH - 指定された先発年を含むYearMonthを返します。 これは、このオブジェクトの年と月を完全に置き換えます。
        • YEAR_OF_ERA - 指定された紀元年を含むYearMonthを返します。その月および紀元は変更されません。
        • YEAR - 指定された年を含むYearMonthを返します。 その月は変更されません。
        • ERA - 指定された紀元を含むYearMonthを返します。 その月および紀元年は変更されません。

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

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

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

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

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

        public YearMonth withYear​(int year)
        年を変更して、このYearMonthのコピーを返します。

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

        パラメータ:
        year - 返される年-月に設定する年(MIN_YEARからMAX_YEARまで)
        戻り値:
        リクエストされた年を含む、この年-月に基づいたYearMonth。null以外
        例外:
        DateTimeException - 年の値が無効である場合
      • withMonth

        public YearMonth withMonth​(int month)
        月を変更して、このYearMonthのコピーを返します。

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

        パラメータ:
        month - 返される年-月に設定する月。1(1月)-12(12月)
        戻り値:
        リクエストされた月を含む、この年-月に基づいたYearMonth。null以外
        例外:
        DateTimeException - 月の値が無効である場合
      • plus

        public YearMonth plus​(TemporalAmount amountToAdd)
        指定された量を加算して、この年/月のコピーを返します。

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

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

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

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

        public YearMonth plus​(long amountToAdd,
                              TemporalUnit unit)
        指定された量を加算して、この年/月のコピーを返します。

        これは、その単位での量を加算して、この年-月に基づくYearMonthを返します。 量を加算できない場合、単位がサポートされていないか他の理由のために、例外がスローされます。

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

        • MONTHS - 指定された月数を加算してYearMonthを返します。 これはplusMonths(long)と同等です。
        • YEARS - 指定された年数を加算してYearMonthを返します。 これはplusYears(long)と同等です。
        • DECADES - 指定された数の10年を加算してYearMonthを返します。 これは、量を10倍にしてplusYears(long)を呼び出すことと同等です。
        • CENTURIES - 指定された数の100年を加算してYearMonthを返します。 これは、量を100倍にしてplusYears(long)を呼び出すことと同等です。
        • MILLENNIA - 指定された数の1000年を加算してYearMonthを返します。 これは、量を1,000倍にしてplusYears(long)を呼び出すことと同等です。
        • ERAS - 指定された紀元数を加算してYearMonthを返します。 サポートされている紀元は2つのみなので、この量は1、0、または-1にする必要があります。 量が0以外である場合は、紀元年が変わらないように、その年が変更されます。

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

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

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

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

        public YearMonth plusYears​(long yearsToAdd)
        指定された年数を加算した、このYearMonthのコピーを返します。

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

        パラメータ:
        yearsToAdd - 加算する年数。負の値の場合もある
        戻り値:
        その年数が加算された、この年-月に基づくYearMonth。null以外
        例外:
        DateTimeException - 結果がサポートされている範囲を超える場合
      • plusMonths

        public YearMonth plusMonths​(long monthsToAdd)
        指定された月数を加算した、このYearMonthのコピーを返します。

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

        パラメータ:
        monthsToAdd - 加算する月数。負の値の場合もある
        戻り値:
        その月数が加算された、この年-月に基づくYearMonth。null以外
        例外:
        DateTimeException - 結果がサポートされている範囲を超える場合
      • minus

        public YearMonth minus​(TemporalAmount amountToSubtract)
        指定された量を減算して、この年/月のコピーを返します。

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

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

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

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

        public YearMonth minus​(long amountToSubtract,
                               TemporalUnit unit)
        指定された量を減算して、この年/月のコピーを返します。

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

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

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

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

        public YearMonth minusYears​(long yearsToSubtract)
        指定された年数を減算した、このYearMonthのコピーを返します。

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

        パラメータ:
        yearsToSubtract - 減算する年数。負の値の場合もある
        戻り値:
        その年数が減算された、この年-月に基づくYearMonth。null以外
        例外:
        DateTimeException - 結果がサポートされている範囲を超える場合
      • minusMonths

        public YearMonth minusMonths​(long monthsToSubtract)
        指定された月数を減算した、このYearMonthのコピーを返します。

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

        パラメータ:
        monthsToSubtract - 減算する月数。負の値の場合もある
        戻り値:
        その月数が減算された、この年-月に基づくYearMonth。null以外
        例外:
        DateTimeException - 結果がサポートされている範囲を超える場合
      • 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.PROLEPTIC_MONTHをフィールドとして渡してTemporal.with(TemporalField, long)を使用することと同等です。 指定された時間的オブジェクトがISOの暦体系を使用しない場合は、DateTimeExceptionがスローされます。

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

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

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

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

        public long until​(Temporal endExclusive,
                          TemporalUnit unit)
        別の年/月までの時間量を指定された単位で計算します。

        これは、1つのTemporalUnitを単位として、2つのYearMonthオブジェクト間の時間量を計算します。 始点と終点は、これと指定された年-月です。 終了が開始より前である場合、結果は負になります。 このメソッドに渡されたTemporalは、from(TemporalAccessor)を使用してYearMonthに変換されます。 たとえば、2つの年/月の間の年単位の期間は、startYearMonth.until(endYearMonth, YEARS)を使用して計算できます。

        この計算では、2つの年-月の間の完全な単位の数を表す整数を返します。 たとえば、2012-06から2032-05までの10年単位の期間は、20年には1か月足りないため、10年のみとなります。

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

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

        計算はChronoUnitのこのメソッドに実装します。 サポートされている単位は、MONTHSYEARSDECADESCENTURIESMILLENNIA、およびERASです。 その他のChronoUnit値は例外をスローします。

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

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

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

        public String format​(DateTimeFormatter formatter)
        指定されたフォーマッタを使用してこの年-月を書式設定します。

        この年-月がフォーマッタに渡されて、文字列が生成されます。

        パラメータ:
        formatter - 使用するフォーマッタ、null以外
        戻り値:
        書式設定された年-月の文字列。null以外
        例外:
        DateTimeException - 出力時にエラーが発生した場合
      • atDay

        public LocalDate atDay​(int dayOfMonth)
        この年-月を「月の日」と組み合せてLocalDateを作成します。

        これは、この年-月および指定された「月の日」から形成されたLocalDateを返します。

        「月の日」の値はその年-月に対して有効である必要があります。

        このメソッドは、日付を生成するためのチェーンの一部として使用できます。

          LocalDate date = year.atMonth(month).atDay(day);
         
        パラメータ:
        dayOfMonth - 使用する「月の日」(1-31)
        戻り値:
        この年-月および指定された日から形成された日付。null以外
        例外:
        DateTimeException - その日がその年-月に対して無効である場合
        関連項目:
        isValidDay(int)
      • atEndOfMonth

        public LocalDate atEndOfMonth()
        その月の終わりのLocalDateを返します。

        これは、この年-月に基づいてLocalDateを返します。 「月の日」は、うるう年を考慮してその月の最後の有効な日に設定されます。

        このメソッドは、日付を生成するためのチェーンの一部として使用できます。

          LocalDate date = year.atMonth(month).atEndOfMonth();
         
        戻り値:
        この年-月の最後の有効な日。null以外
      • compareTo

        public int compareTo​(YearMonth other)
        この年-月をもう一方の年-月と比較します。

        この比較は、まず年の値に基づいて行われ、次に月の値に基づいて行われます。 Comparableに定義されているとおりに、「equalsと一致」しています。

        定義:
        compareTo、インタフェース: Comparable<YearMonth>
        パラメータ:
        other - 比較対象のもう一方の年-月。null以外
        戻り値:
        コンパレータ値、小さい場合は負、大きい場合は正
      • isAfter

        public boolean isAfter​(YearMonth other)
        この年/月が、指定された年/月より後にあるかどうかをチェックします。
        パラメータ:
        other - 比較対象のもう一方の年-月。null以外
        戻り値:
        これが指定された年-月より後にある場合はtrue
      • isBefore

        public boolean isBefore​(YearMonth other)
        この年/月が、指定された年/月より前にあるかどうかをチェックします。
        パラメータ:
        other - 比較対象のもう一方の年-月。null以外
        戻り値:
        この時点が指定された年-月より前にある場合はtrue
      • equals

        public boolean equals​(Object obj)
        この年-月がもう一方の年-月と等しいかどうかを確認します。

        この比較は、それらの年-月の時系列上の位置に基づいています。

        オーバーライド:
        equals 、クラス:  Object
        パラメータ:
        obj - チェックするオブジェクト、nullはfalseを返す
        戻り値:
        これがもう一方の年-月と等しい場合はtrue
        関連項目:
        Object.hashCode()HashMap
      • toString

        public String toString()
        この年-月をStringとして出力します(2007-12など)。

        出力のフォーマットはuuuu-MMになります。

        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        この年-月の文字列表現。null以外