Module  java.base
软件包  java.time.chrono

Class JapaneseDate

  • All Implemented Interfaces:
    SerializableComparable<ChronoLocalDate>ChronoLocalDateTemporalTemporalAccessorTemporalAdjuster


    public final class JapaneseDate
    extends Object
    implements ChronoLocalDate, Serializable
    在日本帝国日历系统的日期。

    此日期使用Japanese Imperial calendar操作 这个日历系统主要在日本使用。

    日系帝国日历系统与日历系统相同,除了基于时代的年份编号。 幼稚年被定义为等同于ISO抗精神病学年。

    日本介绍了从明治6开始的公历。只有明治和以后的时代得到支持; 1月1日明治6日之前的日期不受支持。

    例如,日本年份“平成24”对应于ISO年“2012”。
    致电japaneseDate.get(YEAR_OF_ERA)将返回24。
    致电japaneseDate.get(YEAR)将返回2012年。
    拨打japaneseDate.get(ERA)将返回2,对应JapaneseChronology.ERA_HEISEI

    这是一个value-based课; 对于JapaneseDate实例,使用身份敏感操作(包括引用等式( == ),身份哈希码或同步)可能会产生不可预测的结果,应该避免。 equals方法应用于比较。

    实现要求:
    这个类是不可变的和线程安全的。
    从以下版本开始:
    1.8
    另请参见:
    Serialized Form
    • 方法详细信息

      • now

        public static JapaneseDate now​()
        从默认时区的系统时钟获取当前的JapaneseDate

        这将在默认时区查询system clock以获取当前日期。

        使用此方法将阻止使用备用时钟进行测试,因为时钟是硬编码的。

        结果
        当前日期使用系统时钟和默认时区,不为空
      • now

        public static JapaneseDate now​(ZoneId zone)
        从指定时区的系统时钟获取当前的JapaneseDate

        这将查询system clock获取当前日期。 指定时区可以避免对默认时区的依赖。

        使用此方法将阻止使用备用时钟进行测试,因为时钟是硬编码的。

        参数
        zone - 要使用的区域ID,不为空
        结果
        当前日期使用系统时钟,不为空
      • now

        public static JapaneseDate now​(Clock clock)
        从指定的时钟获取当前的JapaneseDate

        这将查询指定的时钟以获取当前日期 - 今天。 使用此方法可以使用备用时钟进行测试。 可以使用dependency injection引入备用时钟。

        参数
        clock - 要使用的时钟,不为空
        结果
        当前日期,不为null
        异常
        DateTimeException - 如果不能获得当前日期
      • of

        public static JapaneseDate of​(JapaneseEra era,
                                      int yearOfEra,
                                      int month,
                                      int dayOfMonth)
        从时代,年龄,月份和月份字段获取日语日历系统中的日期JapaneseDate

        这将返回一个JapaneseDate与指定的字段。 该日期必须在年和月中有效,否则将抛出异常。

        日历月份和日期与ISO日历系统中的日期和日期相同。 当时代发生变化时,它们不会重置。 例如:

          6th Jan Showa 64 = ISO 1989-01-06
          7th Jan Showa 64 = ISO 1989-01-07
          8th Jan Heisei 1 = ISO 1989-01-08
          9th Jan Heisei 1 = ISO 1989-01-09 
        参数
        era - 日本时代,不为空
        yearOfEra - 日本年代
        month - 日本的月份,从1到12
        dayOfMonth - 日本人的月份,从1到31
        结果
        日语日历系统中的日期,不为空
        异常
        DateTimeException - 如果任何字段的值超出范围,或者月中的日期对于月份无效,或者日期不是日本时代
      • of

        public static JapaneseDate of​(int prolepticYear,
                                      int month,
                                      int dayOfMonth)
        获取JapaneseDate代表从JapaneseDate月,月和日月份日期的日期。

        这将返回一个JapaneseDate与指定的字段。 该日期必须在年和月中有效,否则将抛出异常。

        日本的摄像年份,月份和日期与ISO日历系统中的相同。 当时代发生变化时,它们不会重置。

        参数
        prolepticYear - 日本的 prolepticYear
        month - 日本的月份,从1到12
        dayOfMonth - 日本人的月份,从1到31
        结果
        日语日历系统中的日期,不为空
        异常
        DateTimeException - 如果任何字段的值超出范围,或者如果月的日期对于月份无效
      • from

        public static JapaneseDate from​(TemporalAccessor temporal)
        从时间对象获取JapaneseDate

        这在日本日历系统中基于指定的时间获取日期。 A TemporalAccessor表示一个任意的日期和时间信息集,该工厂转换为JapaneseDate一个实例。

        转换通常使用EPOCH_DAY字段,这是跨日历系统标准化的。

        该方法匹配功能界面TemporalQuery的签名,允许其通过方法参考JapaneseDate::from用作查询。

        参数
        temporal - 要转换的时间对象,不为null
        结果
        日语日历系统中的日期,不为空
        异常
        DateTimeException - 如果无法转换为 JapaneseDate
        另请参见:
        Chronology.date(TemporalAccessor)
      • getChronology

        public JapaneseChronology getChronology​()
        获得这个日期的年表,这是日本的日历系统。

        Chronology表示正在使用的日历系统。 时代和其他领域在ChronoField由时间顺序定义。

        Specified by:
        getChronology在接口 ChronoLocalDate
        结果
        日本的年表,不为空
      • getEra

        public JapaneseEra getEra​()
        获得这个时代适用的时代。

        日历日历系统有多个时间由JapaneseEra定义。

        Specified by:
        getEra在接口 ChronoLocalDate
        结果
        在此日期适用的时代不为零
      • lengthOfMonth

        public int lengthOfMonth​()
        返回由此日期表示的月份的长度。

        这将以天为单位返回月份的长度。 月份长度与ISO日历系统相匹配。

        Specified by:
        lengthOfMonth在接口 ChronoLocalDate
        结果
        月的长度以天为单位
      • isSupported

        public boolean isSupported​(TemporalField field)
        检查指定的字段是否受支持。

        这将检查是否可以查询指定字段的日期。 如果是false,那么调用rangeget方法会抛出异常。

        如果该字段是一个ChronoField那么查询是在这里实现的。 支持的字段有:

        • DAY_OF_WEEK
        • DAY_OF_MONTH
        • DAY_OF_YEAR
        • EPOCH_DAY
        • MONTH_OF_YEAR
        • PROLEPTIC_MONTH
        • YEAR_OF_ERA
        • YEAR
        • ERA
        所有其他ChronoField实例将返回false。

        如果该字段不是一个ChronoField ,那么这个方法的结果是通过调用this作为参数TemporalField.isSupportedBy(TemporalAccessor)传递的。 字段是否受支持由字段决定。

        Specified by:
        isSupported在接口 ChronoLocalDate
        Specified by:
        isSupported在接口 TemporalAccessor
        参数
        field - 要检查的字段,null返回false
        结果
        如果在此日期支持该字段,则为true,否则为false
      • range

        public ValueRange range​(TemporalField field)
        描述从接口TemporalAccessor复制
        获取指定字段的有效值的范围。

        所有字段都可以表示为long整数。 此方法返回描述该值的有效范围的对象。 该时间对象的值用于提高返回范围的精度。 如果日期时间无法返回范围,因为该字段不受支持或由于其他原因,将抛出异常。

        请注意,结果仅描述最小和最大有效值,重要的是不要太多读取它们。 例如,可以在该范围内的值对该字段无效。

        Specified by:
        range在接口 TemporalAccessor
        参数
        field - 查询范围的字段,不为null
        结果
        字段的有效值的范围不为null
      • getLong

        public long getLong​(TemporalField field)
        说明从界面TemporalAccessor复制
        获取指定字段的long

        这将查询指定字段的值的日期时间。 返回的值可能在该字段的值的有效范围之外。 如果日期时间不能返回值,因为该字段不受支持或由于其他原因,将抛出异常。

        Specified by:
        getLong在接口 TemporalAccessor
        参数
        field - 要获取的字段,不为null
        结果
        该字段的值
      • with

        public JapaneseDate with​(TemporalField field,
                                 long newValue)
        说明从界面ChronoLocalDate复制
        返回与该对象具有相同类型的对象,并更改指定的字段。

        这将返回一个基于该对象的新对象,其中指定字段的值已更改。 例如,在LocalDate ,这可以用于设置年,月或月。 返回的对象将具有与该对象相同的可观察类型。

        在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表1月31日的日期,则将月份更改为2月份将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。

        Specified by:
        with在接口 ChronoLocalDate
        Specified by:
        with在接口 Temporal
        参数
        field - 要在结果中设置的字段,不为null
        newValue - 结果中字段的新值
        结果
        与指定字段集相同类型的对象,不为null
      • with

        public JapaneseDate with​(TemporalAdjuster adjuster)
        通过进行调整,返回与该对象相同类型的调整对象。

        这将根据指定的调整器的规则调整此日期时间。 一个简单的调整器可能只是设置一个字段,如年份字段。 更复杂的调整器可能会将日期设置为该月的最后一天。 TemporalAdjusters提供了一些常见的调整。 这些包括找到“月的最后一天”和“下周三”。 调整员负责处理特殊情况,如月份和闰年的不同长度。

        一些示例代码,指示如何和为什么使用此方法:

          date = date.with(Month.JULY);        // most key classes implement TemporalAdjuster
          date = date.with(lastDayOfMonth());  // static import from Adjusters
          date = date.with(next(WEDNESDAY));   // static import from Adjusters and DayOfWeek 
        Specified by:
        with在接口 ChronoLocalDate
        Specified by:
        with在接口 Temporal
        参数
        adjuster - 调整器使用,不为空
        结果
        具有指定调整的相同类型的对象,不为null
        异常
        DateTimeException - 如果不能进行调整
        ArithmeticException - 如果发生数字溢出
      • plus

        public JapaneseDate plus​(TemporalAmount amount)
        返回与此对象相同类型的对象,并添加一个金额。

        这调整这个时间,根据指定量的规则添加。 金额通常是Period但可能是实现TemporalAmount接口的任何其他类型,如Duration

        一些示例代码,指示如何和为什么使用此方法:

          date = date.plus(period);                // add a Period instance
          date = date.plus(duration);              // add a Duration instance
          date = date.plus(workingDays(6));        // example user-written workingDays method 

        请注意,呼叫plus后跟minus不保证返回相同的日期时间。

        Specified by:
        plus在接口 ChronoLocalDate
        Specified by:
        plus在接口 Temporal
        参数
        amount - 要添加的金额,不为null
        结果
        具有指定调整的相同类型的对象,不为null
        异常
        DateTimeException - 如果不能添加
        ArithmeticException - 如果发生数字溢出
      • minus

        public JapaneseDate minus​(TemporalAmount amount)
        返回与该对象相同类型的对象,并减去一个数量。

        这调整这个时间,根据指定量的规则减去。 金额通常是Period但可能是实现TemporalAmount接口的任何其他类型,如Duration

        一些示例代码,指示如何和为什么使用此方法:

          date = date.minus(period);               // subtract a Period instance
          date = date.minus(duration);             // subtract a Duration instance
          date = date.minus(workingDays(6));       // example user-written workingDays method 

        请注意,呼叫plus后跟minus不保证返回相同的日期时间。

        Specified by:
        minus在接口 ChronoLocalDate
        Specified by:
        minus在接口 Temporal
        参数
        amount - 减去量,不为空
        结果
        具有指定调整的相同类型的对象,不为null
        异常
        DateTimeException - 如果不能进行减法
        ArithmeticException - 如果发生数字溢出
      • plus

        public JapaneseDate plus​(long amountToAdd,
                                 TemporalUnit unit)
        说明从接口ChronoLocalDate复制
        返回与此对象相同类型的对象,并添加指定的句点。

        此方法基于添加了指定句点的新对象。 例如,在LocalDate ,这可以用来添加几年,几个月或几天。 返回的对象将具有与该对象相同的可观察类型。

        在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表1月31日的日期,则添加一个月将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。

        Specified by:
        plus在接口 ChronoLocalDate
        Specified by:
        plus在接口 Temporal
        参数
        amountToAdd - 要添加的指定单位的数量,可能为负数
        unit - 要添加的单位,不为null
        结果
        与指定期间相同类型的对象添加,不为空
      • minus

        public JapaneseDate minus​(long amountToAdd,
                                  TemporalUnit unit)
        描述从接口ChronoLocalDate复制
        返回与该对象相同类型的对象,并减去指定的时间段。

        该方法返回一个基于该对象的新对象,减去指定的时间段。 例如,在LocalDate ,这可以用来减去几年,几个月或几天。 返回的对象将具有与该对象相同的可观察类型。

        在某些情况下,更改字段尚未完全定义。 例如,如果目标对象是代表3月31日的日期,则减去一个月将不清楚。 在这种情况下,该领域负责解决结果。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。

        Specified by:
        minus在接口 ChronoLocalDate
        Specified by:
        minus在接口 Temporal
        参数
        amountToAdd - 扣除指定单位的金额,可能为负数
        unit - 减去量的单位,不为空
        结果
        与指定周期相同类型的对象减去,不为空
      • atTime

        public final ChronoLocalDateTime<JapaneseDate> atTime​(LocalTime localTime)
        说明从接口ChronoLocalDate复制
        结合这个日期与时间创建一个ChronoLocalDateTime

        这将在指定的时间返回从此日期形成的ChronoLocalDateTime 日期和时间的所有可能的组合都是有效的。

        Specified by:
        atTime在接口 ChronoLocalDate
        参数
        localTime - 当地使用时间,不为空
        结果
        从该日期到指定时间形成的本地日期时间,不为空
      • until

        public ChronoPeriod until​(ChronoLocalDate endDate)
        说明从接口ChronoLocalDate复制
        将此日期和另一个日期之间的期间计算为ChronoPeriod

        这计算两个日期之间的期间。 所有提供的年表使用年,月和日计算周期,但是, ChronoPeriod API允许使用其他单位来表示期间。

        起点和终点是this和指定的日期。 如果结束在开始之前,结果将为负数。 每年,每月的负号将相同。

        计算使用此日期的年表进行。 如有必要,输入日期将被转换为匹配。

        此实例是不可变的,不受此方法调用的影响。

        Specified by:
        until在接口 ChronoLocalDate
        参数
        endDate - 结束日期,排他,可能在任何年代,不为空
        结果
        此日期与结束日期之间的期间不为空
      • toEpochDay

        public long toEpochDay​()
        说明从接口ChronoLocalDate复制
        将此日期转换为大纪元日。

        Epoch Day count是第0天为1970-01-01(ISO)的简单递增计数。 这个定义对于所有的年表都是一样的,可以进行转换。

        此默认实现查询EPOCH_DAY字段。

        Specified by:
        toEpochDay在接口 ChronoLocalDate
        结果
        大纪元日等于这个日期
      • equals

        public boolean equals​(Object obj)
        将此日期与其他日期进行比较,包括年表。

        比较这个JapaneseDate与另一个确保日期是一样的。

        只有JapaneseDate类型的JapaneseDate被比较,其他类型返回false。 要比较两个TemporalAccessor实例的日期,包括两个不同年表中的日期,请使用ChronoField.EPOCH_DAY作为比较。

        Specified by:
        equals在接口 ChronoLocalDate
        参数
        obj - 要检查的对象,null返回false
        结果
        如果这等于其他日期,则为真
        另请参见:
        Object.hashCode()HashMap
      • until

        public long until​(Temporal endExclusive,
                          TemporalUnit unit)
        说明从界面ChronoLocalDate复制
        根据指定的单位计算直到另一个日期的时间量。

        这个计算两个之间的时间量ChronoLocalDate在单一方面对象TemporalUnit 起点和终点是this和指定的日期。 如果结束在开始之前,结果将为负数。 所述Temporal传递给此方法被转换为ChronoLocalDate使用Chronology.date(TemporalAccessor) 计算返回一个整数,表示两个日期之间的完整单位数。 例如,可以使用startDate.until(endDate, DAYS)计算两个日期之间的天startDate.until(endDate, DAYS)

        使用这种方法有两种等效的方法。 第一个是调用这个方法。 二是使用TemporalUnit.between(Temporal, Temporal)

          // these two lines are equivalent
           amount = start.until(end, MONTHS);
           amount = MONTHS.between(start, end); 
        应该根据这种做法进行选择,使代码更易读。

        以此方法计算ChronoUnit 单位DAYSWEEKSMONTHSYEARSDECADESCENTURIESMILLENNIAERAS应该由所有的实现支持。 其他ChronoUnit值会抛出异常。

        如果该单元不是ChronoUnit ,则此方法的结果是通过调用得到TemporalUnit.between(Temporal, Temporal)传递this作为第一个参数和转换后的输入时间作为第二个参数。

        此实例是不可变的,不受此方法调用的影响。

        Specified by:
        until在接口 ChronoLocalDate
        Specified by:
        until在接口 Temporal
        参数
        endExclusive - 结束日期,排他,在同一年代转换为 ChronoLocalDate ,不为空
        unit - 测量金额的单位,不为空
        结果
        此日期与结束日期之间的时间
      • toString

        public String toString​()
        描述从类别复制: Object
        返回对象的字符串表示形式。 一般情况下, toString方法返回一个“ toString代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。

        toString类方法Object返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@ ”,并且对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         
        Specified by:
        toString在接口 ChronoLocalDate
        重写:
        toStringObject
        结果
        a string representation of the object.