Module java.base
Package java.time

Class OffsetDateTime

java.lang.Object
java.time.OffsetDateTime
所有已实现的接口:
Serializable, Comparable<OffsetDateTime>, Temporal, TemporalAccessor, TemporalAdjuster

public final class OffsetDateTime extends Object implements Temporal, TemporalAdjuster, Comparable<OffsetDateTime>, Serializable
一个带有UTC/Greenwich偏移的ISO-8601日历系统中的日期时间,例如2007-12-03T10:15:30+01:00

OffsetDateTime是一个不可变的带有偏移的日期时间表示。该类存储所有日期和时间字段,精确到纳秒,以及与UTC/Greenwich的偏移。例如,值"2007年10月2日13:45:30.123456789 +02:00"可以存储在OffsetDateTime中。

OffsetDateTimeZonedDateTimeInstant都以纳秒精度存储时间线上的瞬时。 Instant是最简单的,只表示瞬时。 OffsetDateTime在瞬时上添加了与UTC/Greenwich的偏移,这允许获取本地日期时间。 ZonedDateTime添加了完整的时区规则。

建议在简单应用程序中使用ZonedDateTimeInstant来建模数据。当更详细地建模日期时间概念或在与数据库通信或网络协议中使用时,可以使用此类。

这是一个基于值的类;程序员应该将相等的实例视为可互换的,不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。应该使用equals方法进行比较。

实现要求:
此类是不可变的且线程安全的。
自 JDK 版本:
1.8
参见:
  • Field Details

    • MIN

      public static final OffsetDateTime MIN
      支持的最小OffsetDateTime,'-999999999-01-01T00:00:00+18:00'。这是最大偏移的最小日期时间(较大的偏移在时间线上更早)。这结合了LocalDateTime.MINZoneOffset.MAX。应用程序可以将其用作“遥远过去”的日期时间。
    • MAX

      public static final OffsetDateTime MAX
      最大支持的OffsetDateTime,'+999999999-12-31T23:59:59.999999999-18:00'。这是在最小偏移量的最大日期结束之前的本地日期时间(更大的负偏移量在时间线上更晚)。这结合了LocalDateTime.MAXZoneOffset.MIN。这可以被应用程序用作“遥远的未来”日期时间。
  • Method Details

    • timeLineOrder

      public static Comparator<OffsetDateTime> timeLineOrder()
      获取一个比较器,仅基于瞬时比较两个OffsetDateTime实例。

      此方法与compareTo(java.time.OffsetDateTime)中的比较不同,因为它仅比较基础瞬时。

      返回:
      一个按时间线顺序比较的比较器
      参见:
    • now

      public static OffsetDateTime now()
      从系统时钟中获取默认时区的当前日期时间。

      这将查询默认时区中的系统时钟以获取当前日期时间。偏移量将根据时钟中的时区计算。

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

      返回:
      使用系统时钟的当前日期时间,非空
    • now

      public static OffsetDateTime now(ZoneId zone)
      从指定时区的系统时钟中获取当前日期时间。

      这将查询系统时钟以获取当前日期时间。指定时区可避免依赖默认时区。偏移量将根据指定的时区计算。

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

      参数:
      zone - 要使用的区域ID,非空
      返回:
      使用系统时钟的当前日期时间,非空
    • now

      public static OffsetDateTime now(Clock clock)
      从指定时钟获取当前日期时间。

      这将查询指定的时钟以获取当前日期时间。偏移量将根据时钟中的时区计算。

      使用此方法允许使用替代时钟进行测试。可以通过依赖注入引入替代时钟。

      参数:
      clock - 要使用的时钟,非空
      返回:
      当前日期时间,非空
    • of

      public static OffsetDateTime of(LocalDate date, LocalTime time, ZoneOffset offset)
      从日期、时间和偏移量获取OffsetDateTime的实例。

      这将使用指定的本地日期、时间和偏移量创建一个偏移日期时间。

      参数:
      date - 本地日期,非空
      time - 本地时间,非空
      offset - 区域偏移量,非空
      返回:
      偏移日期时间,非空
    • of

      public static OffsetDateTime of(LocalDateTime dateTime, ZoneOffset offset)
      从日期时间和偏移量获取OffsetDateTime的实例。

      这将使用指定的本地日期时间和偏移量创建一个偏移日期时间。

      参数:
      dateTime - 本地日期时间,非空
      offset - 区域偏移量,非空
      返回:
      偏移日期时间,非空
    • of

      public static OffsetDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneOffset offset)
      从年、月、日、小时、分钟、秒、纳秒和偏移量获取OffsetDateTime的实例。

      这将使用七个指定字段创建一个偏移日期时间。

      此方法主要用于编写测试用例。非测试代码通常会使用其他方法来创建偏移时间。LocalDateTime具有五个等效工厂方法的便利变体,接受较少的参数。这里不提供它们以减少API的占用空间。

      参数:
      year - 要表示的年份,从MIN_YEAR到MAX_YEAR
      month - 要表示的年份,从1(一月)到12(十二月)
      dayOfMonth - 要表示的月份中的日期,从1到31
      hour - 要表示的小时,从0到23
      minute - 要表示的小时中的分钟,从0到59
      second - 要表示的分钟中的秒,从0到59
      nanoOfSecond - 要表示的秒中的纳秒,从0到999,999,999
      offset - 区域偏移量,非空
      返回:
      偏移日期时间,非空
      抛出:
      DateTimeException - 如果任何字段的值超出范围,或者日期无效
    • ofInstant

      public static OffsetDateTime ofInstant(Instant instant, ZoneId zone)
      Instant和区域ID获取OffsetDateTime的实例。

      这将创建一个与指定瞬时相同的偏移日期时间。从UTC/Greenwich找到偏移量很简单,因为每个瞬时只有一个有效的偏移量。

      参数:
      instant - 要从中创建日期时间的瞬时,非空
      zone - 时区,可以是偏移量,非空
      返回:
      偏移日期时间,非空
      抛出:
      DateTimeException - 如果结果超出支持的范围
    • from

      public static OffsetDateTime from(TemporalAccessor temporal)
      从时间对象获取OffsetDateTime的实例。

      这基于指定的时间对象获取一个偏移日期时间。 TemporalAccessor表示一组任意的日期和时间信息,此工厂将其转换为OffsetDateTime的实例。

      转换将首先从时间对象获取ZoneOffset。然后尝试获取LocalDateTime,必要时回退到Instant。结果将是ZoneOffsetLocalDateTimeInstant的组合。实现允许执行优化,例如访问等效于相关对象的字段。

      此方法与函数接口TemporalQuery的签名匹配,允许通过方法引用OffsetDateTime::from将其用作查询。

      参数:
      temporal - 要转换的时间对象,非空
      返回:
      偏移日期时间,非空
      抛出:
      DateTimeException - 如果无法转换为OffsetDateTime
    • parse

      public static OffsetDateTime parse(CharSequence text)
      从文本字符串(例如2007-12-03T10:15:30+01:00)获取OffsetDateTime的实例。

      字符串必须表示有效的日期时间,并使用DateTimeFormatter.ISO_OFFSET_DATE_TIME进行解析。

      参数:
      text - 要解析的文本,例如"2007-12-03T10:15:30+01:00",非空
      返回:
      解析的偏移日期时间,非空
      抛出:
      DateTimeParseException - 如果无法解析文本
    • parse

      public static OffsetDateTime parse(CharSequence text, DateTimeFormatter formatter)
      使用特定格式化程序从文本字符串获取OffsetDateTime的实例。

      使用格式化程序解析文本,返回一个日期时间。

      参数:
      text - 要解析的文本,非空
      formatter - 要使用的格式化程序,非空
      返回:
      解析的偏移日期时间,非空
      抛出:
      DateTimeParseException - 如果无法解析文本
    • isSupported

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

      这将检查此日期时间是否可以查询指定字段。如果为false,则调用rangegetwith(TemporalField, long)方法将抛出异常。

      如果字段是一个ChronoField,则在此处实现查询。支持的字段包括:

      • NANO_OF_SECOND
      • NANO_OF_DAY
      • MICRO_OF_SECOND
      • MICRO_OF_DAY
      • MILLI_OF_SECOND
      • MILLI_OF_DAY
      • SECOND_OF_MINUTE
      • SECOND_OF_DAY
      • MINUTE_OF_HOUR
      • MINUTE_OF_DAY
      • HOUR_OF_AMPM
      • CLOCK_HOUR_OF_AMPM
      • HOUR_OF_DAY
      • CLOCK_HOUR_OF_DAY
      • AMPM_OF_DAY
      • DAY_OF_WEEK
      • ALIGNED_DAY_OF_WEEK_IN_MONTH
      • ALIGNED_DAY_OF_WEEK_IN_YEAR
      • DAY_OF_MONTH
      • DAY_OF_YEAR
      • EPOCH_DAY
      • ALIGNED_WEEK_OF_MONTH
      • ALIGNED_WEEK_OF_YEAR
      • MONTH_OF_YEAR
      • PROLEPTIC_MONTH
      • YEAR_OF_ERA
      • YEAR
      • ERA
      • INSTANT_SECONDS
      • OFFSET_SECONDS
      所有其他ChronoField实例将返回false。

      如果字段不是ChronoField,则通过调用TemporalField.isSupportedBy(TemporalAccessor)传递this作为参数来获取此方法的结果。字段是否受支持由字段确定。

      指定者:
      isSupported 在接口 TemporalAccessor
      参数:
      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
      • WEEKS
      • MONTHS
      • YEARS
      • DECADES
      • CENTURIES
      • MILLENNIA
      • ERAS
      所有其他ChronoUnit实例将返回false。

      如果单位不是ChronoUnit,则通过调用TemporalUnit.isSupportedBy(Temporal)并将this作为参数传递来获取此方法的结果。单位是否受支持由单位决定。

      指定者:
      isSupported 在接口 Temporal
      参数:
      unit - 要检查的单位,null返回false
      返回:
      如果可以添加/减去单位,则为true,否则为false
    • range

      public ValueRange range(TemporalField field)
      获取指定字段的有效值范围。

      范围对象表示字段的最小和最大有效值。此日期时间用于增强返回的范围的准确性。如果无法返回范围,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是一个ChronoField,则在此处实现查询。支持的字段将返回适当的范围实例。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException异常。

      如果字段不是ChronoField,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)并将this作为参数传递来获取此方法的结果。是否可以获取范围由字段决定。

      指定者:
      range 在接口 TemporalAccessor
      参数:
      field - 要查询范围的字段,不能为空
      返回:
      字段的有效值范围,不能为空
      抛出:
      DateTimeException - 如果无法获取字段的范围
      UnsupportedTemporalTypeException - 如果不支持该字段
    • get

      public int get(TemporalField field)
      获取此日期时间的指定字段的值作为int

      查询此日期时间以获取指定字段的值。返回的值将始终在字段的有效值范围内。如果无法返回值,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是一个ChronoField,则在此处实现查询。支持的字段将根据此日期时间返回基于有效值的值,除了NANO_OF_DAYMICRO_OF_DAYEPOCH_DAYPROLEPTIC_MONTHINSTANT_SECONDS,它们太大而无法适应int并抛出UnsupportedTemporalTypeException异常。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException异常。

      如果字段不是ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)并将this作为参数传递来获取此方法的结果。是否可以获取值以及值代表什么由字段决定。

      指定者:
      get 在接口 TemporalAccessor
      参数:
      field - 要获取的字段,不能为空
      返回:
      字段的值
      抛出:
      DateTimeException - 如果无法获取字段的值或值超出字段的有效值范围
      UnsupportedTemporalTypeException - 如果不支持该字段或值的范围超过int
      ArithmeticException - 如果发生数值溢出
    • getLong

      public long getLong(TemporalField field)
      获取此日期时间的指定字段的值作为long

      查询此日期时间以获取指定字段的值。如果无法返回值,因为不支持该字段或出于其他原因,将抛出异常。

      如果字段是一个ChronoField,则在此处实现查询。支持的字段将根据此日期时间返回有效值。所有其他ChronoField实例将抛出UnsupportedTemporalTypeException异常。

      如果字段不是ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)并将this作为参数传递来获取此方法的结果。是否可以获取值以及值代表什么由字段决定。

      指定者:
      getLong 在接口 TemporalAccessor
      参数:
      field - 要获取的字段,不能为空
      返回:
      字段的值
      抛出:
      DateTimeException - 如果无法获取字段的值
      UnsupportedTemporalTypeException - 如果不支持该字段
      ArithmeticException - 如果发生数值溢出
    • getOffset

      public ZoneOffset getOffset()
      获取区域偏移,例如'+01:00'。

      这是本地日期时间与UTC/Greenwich之间的偏移量。

      返回:
      区域偏移,不能为空
    • withOffsetSameLocal

      public OffsetDateTime withOffsetSameLocal(ZoneOffset offset)
      返回具有指定偏移的此OffsetDateTime的副本,确保结果具有相同的本地日期时间。

      此方法返回一个具有相同LocalDateTime和指定ZoneOffset的对象。不需要或执行任何计算。例如,如果此时间表示2007-12-03T10:30+02:00,指定的偏移量为+03:00,则此方法将返回2007-12-03T10:30+03:00

      要考虑偏移量之间的差异,并调整时间字段,请使用withOffsetSameInstant(java.time.ZoneOffset)

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

      参数:
      offset - 要更改为的区域偏移,不能为空
      返回:
      基于此日期时间的具有请求偏移的OffsetDateTime,不能为空
    • withOffsetSameInstant

      public OffsetDateTime withOffsetSameInstant(ZoneOffset offset)
      返回具有指定偏移的此OffsetDateTime的副本,确保结果处于相同的时刻。

      此方法返回一个具有指定ZoneOffset和通过两个偏移量之间的差异调整的LocalDateTime的对象。这将导致旧对象和新对象表示相同的时刻。这对于在不同偏移量中查找本地时间很有用。例如,如果此时间表示2007-12-03T10:30+02:00,指定的偏移量为+03:00,则此方法将返回2007-12-03T11:30+03:00

      要更改偏移量而不调整本地时间,请使用withOffsetSameLocal(java.time.ZoneOffset)

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

      参数:
      offset - 要更改为的区域偏移,不能为空
      返回:
      基于此日期时间的具有请求偏移的OffsetDateTime,不能为空
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • toLocalDateTime

      public LocalDateTime toLocalDateTime()
      获取此日期时间的LocalDateTime部分。

      这将返回一个具有与此日期时间相同的年、月、日和时间的LocalDateTime

      返回:
      此日期时间的本地日期时间部分,不能为空
    • toLocalDate

      public LocalDate toLocalDate()
      获取此日期时间的LocalDate部分。

      这将返回一个具有与此日期时间相同的年、月和日的LocalDate

      返回:
      此日期时间的日期部分,不为null
    • getYear

      public int getYear()
      获取年份字段。

      此方法返回年份的原始int值。

      此方法返回的年份是根据get(YEAR)的规则。要获取年代年份,请使用get(YEAR_OF_ERA)

      返回:
      年份,从MIN_YEAR到MAX_YEAR
    • getMonthValue

      public int getMonthValue()
      获取月份字段,从1到12。

      此方法将月份作为1到12的int返回。如果应用程序代码使用枚举Month调用getMonth(),通常更清晰。

      返回:
      月份,从1到12
      参见:
    • getMonth

      public Month getMonth()
      使用Month枚举获取月份字段。

      此方法返回月份的枚举Month。这样可以避免混淆int值的含义。如果需要访问原始int值,则枚举提供了int值

      返回:
      月份,不为null
      参见:
    • getDayOfMonth

      public int getDayOfMonth()
      获取日期中的日字段。

      此方法返回日期中日的原始int值。

      返回:
      日,从1到31
    • getDayOfYear

      public int getDayOfYear()
      获取年份中的日字段。

      此方法返回年份中日的原始int值。

      返回:
      日,从1到365,闰年为366
    • getDayOfWeek

      public DayOfWeek getDayOfWeek()
      获取星期几字段,这是一个枚举DayOfWeek

      此方法返回星期几的枚举DayOfWeek。这样可以避免混淆int值的含义。如果需要访问原始int值,则枚举提供了int值

      可以从DayOfWeek获取其他信息。这包括值的文本名称。

      返回:
      星期几,不为null
    • toLocalTime

      public LocalTime toLocalTime()
      获取此日期时间的LocalTime部分。

      返回一个具有与此日期时间相同的小时、分钟、秒和纳秒的LocalTime

      返回:
      此日期时间的时间部分,不为null
    • getHour

      public int getHour()
      获取小时字段。
      返回:
      小时,从0到23
    • getMinute

      public int getMinute()
      获取分钟字段。
      返回:
      分钟,从0到59
    • getSecond

      public int getSecond()
      获取秒字段。
      返回:
      秒,从0到59
    • getNano

      public int getNano()
      获取纳秒字段。
      返回:
      纳秒,从0到999,999,999
    • with

      public OffsetDateTime with(TemporalAdjuster adjuster)
      返回此日期时间的调整副本。

      返回一个基于此日期时间的OffsetDateTime,并进行调整。使用指定的调整策略对象进行调整。阅读调整器的文档以了解将进行的调整。

      简单的调整器可能只是设置字段之一,例如年份字段。更复杂的调整器可能将日期设置为该月的最后一天。提供了一些常见的调整选项在TemporalAdjusters中。这些包括查找“月底”和“下周三”。关键的日期时间类还实现了TemporalAdjuster接口,例如MonthMonthDay。调整器负责处理特殊情况,例如月份的长度和闰年。

      例如,此代码返回七月的最后一天的日期:

        import static java.time.Month.*;
        import static java.time.temporal.TemporalAdjusters.*;
      
        result = offsetDateTime.with(JULY).with(lastDayOfMonth());
       

      LocalDateLocalTimeZoneOffset实现了TemporalAdjuster,因此此方法可用于更改日期、时间或偏移量:

        result = offsetDateTime.with(date);
        result = offsetDateTime.with(time);
        result = offsetDateTime.with(offset);
       

      此方法的结果是通过在指定的调整器上调用TemporalAdjuster.adjustInto(Temporal)方法并将this作为参数传递来获得的。

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

      指定者:
      with 在接口 Temporal
      参数:
      adjuster - 要使用的调整器,不为null
      返回:
      基于this进行调整的OffsetDateTime,不为null
      抛出:
      DateTimeException - 如果无法进行调整
      ArithmeticException - 如果发生数值溢出
    • with

      public OffsetDateTime with(TemporalField field, long newValue)
      返回此日期时间的副本,并将指定字段设置为新值。

      返回一个基于此日期时间的OffsetDateTime,并更改指定字段的值。这可用于更改任何支持的字段,例如年、月或日。如果无法设置值,因为不支持该字段或出于其他原因,将抛出异常。

      在某些情况下,更改指定字段可能导致结果日期时间无效,例如将月份从1月31日更改为2月会使日期无效。在这种情况下,字段负责解析日期。通常它会选择前一个有效日期,例如在此示例中为2月的最后一个有效日期。

      如果字段是一个ChronoField,则在此处实现调整。

      INSTANT_SECONDS字段将返回具有指定时刻的日期时间。偏移量和纳秒不变。如果新的时刻值超出有效范围,则将抛出DateTimeException

      OFFSET_SECONDS字段将返回具有指定偏移量的日期时间。本地日期时间不变。如果新的偏移值超出有效范围,则将抛出DateTimeException

      其他支持的字段将按照LocalDateTime上的匹配方法的行为。在这种情况下,偏移量不参与计算,将保持不变。

      所有其他ChronoField实例将抛出UnsupportedTemporalTypeException

      如果字段不是ChronoField,则通过调用TemporalField.adjustInto(Temporal, long)方法并将this作为参数传递来获得此方法的结果。在这种情况下,字段确定是否以及如何调整时刻。

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

      指定者:
      with 在接口 Temporal
      参数:
      field - 要在结果中设置的字段,不为null
      newValue - 结果中字段的新值
      返回:
      基于this进行设置指定字段的OffsetDateTime,不为null
      抛出:
      DateTimeException - 如果无法设置字段
      UnsupportedTemporalTypeException - 如果不支持该字段
      ArithmeticException - 如果发生数值溢出
    • withYear

      public OffsetDateTime withYear(int year)
      返回将年份更改后的OffsetDateTime的副本。

      时间和偏移量不影响计算,并且在结果中将保持不变。如果日期中的日无效,则会更改为该月的最后一个有效日期。

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

      参数:
      year - 要在结果中设置的年份,从MIN_YEAR到MAX_YEAR
      返回:
      基于此日期时间的OffsetDateTime,具有请求的年份,不为null
      抛出:
      DateTimeException - 如果年份值无效
    • withMonth

      public OffsetDateTime withMonth(int month)
      返回将月份更改后的OffsetDateTime的副本。

      时间和偏移量不影响计算,并且在结果中将保持不变。如果日期中的日无效,则会更改为该月的最后一个有效日期。

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

      参数:
      month - 要在结果中设置的月份,从1(一月)到12(十二月)
      返回:
      基于此日期时间的OffsetDateTime,具有请求的月份,不为null
      抛出:
      DateTimeException - 如果月份值无效
    • withDayOfMonth

      public OffsetDateTime withDayOfMonth(int dayOfMonth)
      返回修改了月份的OffsetDateTime的副本。

      如果结果的OffsetDateTime无效,则会抛出异常。时间和偏移量不影响计算,并且在结果中将保持不变。

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

      参数:
      dayOfMonth - 要设置为结果中的日期,从1到28-31
      返回:
      基于此日期时间的OffsetDateTime,具有请求的日期,不为null
      抛出:
      DateTimeException - 如果日期值无效,或者日期值对于月份-年份无效
    • withDayOfYear

      public OffsetDateTime withDayOfYear(int dayOfYear)
      返回修改了年份的OffsetDateTime的副本。

      时间和偏移量不影响计算,并且在结果中将保持不变。如果结果的OffsetDateTime无效,则会抛出异常。

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

      参数:
      dayOfYear - 要设置为结果中的年份,从1到365-366
      返回:
      基于此日期的OffsetDateTime,具有请求的日期,不为null
      抛出:
      DateTimeException - 如果年份值无效,或者年份对于该年份无效
    • withHour

      public OffsetDateTime withHour(int hour)
      返回修改了小时的OffsetDateTime的副本。

      日期和偏移量不影响计算,并且在结果中将保持不变。

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

      参数:
      hour - 要设置为结果中的小时,从0到23
      返回:
      基于此日期时间的OffsetDateTime,具有请求的小时,不为null
      抛出:
      DateTimeException - 如果小时值无效
    • withMinute

      public OffsetDateTime withMinute(int minute)
      返回修改了分钟的OffsetDateTime的副本。

      日期和偏移量不影响计算,并且在结果中将保持不变。

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

      参数:
      minute - 要设置为结果中的分钟,从0到59
      返回:
      基于此日期时间的OffsetDateTime,具有请求的分钟,不为null
      抛出:
      DateTimeException - 如果分钟值无效
    • withSecond

      public OffsetDateTime withSecond(int second)
      返回修改了秒数的OffsetDateTime的副本。

      日期和偏移量不影响计算,并且在结果中将保持不变。

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

      参数:
      second - 要设置为结果中的秒数,从0到59
      返回:
      基于此日期时间的OffsetDateTime,具有请求的秒数,不为null
      抛出:
      DateTimeException - 如果秒数值无效
    • withNano

      public OffsetDateTime withNano(int nanoOfSecond)
      返回修改了纳秒数的OffsetDateTime的副本。

      日期和偏移量不影响计算,并且在结果中将保持不变。

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

      参数:
      nanoOfSecond - 要设置为结果中的纳秒数,从0到999,999,999
      返回:
      基于此日期时间的OffsetDateTime,具有请求的纳秒数,不为null
      抛出:
      DateTimeException - 如果纳秒值无效
    • truncatedTo

      public OffsetDateTime truncatedTo(TemporalUnit unit)
      返回截断时间后的OffsetDateTime的副本。

      截断返回原始日期时间的副本,其中小于指定单位的字段设置为零。例如,使用minutes单位进行截断将会将秒数和纳秒数字段设置为零。

      单位必须具有可被标准日期整除的duration,不得有余数。这包括所有提供的时间单位在ChronoUnitDAYS上。其他单位会抛出异常。

      偏移量不影响计算,并且在结果中将保持不变。

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

      参数:
      unit - 要截断到的单位,不为null
      返回:
      基于此日期时间的OffsetDateTime,具有截断后的时间,不为null
      抛出:
      DateTimeException - 如果无法截断
      UnsupportedTemporalTypeException - 如果单位不受支持
    • plus

      public OffsetDateTime plus(TemporalAmount amountToAdd)
      返回添加了指定数量的副本的日期时间。

      这将返回一个OffsetDateTime,基于此日期时间,添加了指定的数量。该数量通常是PeriodDuration,但也可以是实现TemporalAmount接口的任何其他类型。

      通过调用TemporalAmount.addTo(Temporal)将计算委托给数量对象。数量的实现可以以任何希望的方式实现添加,但通常会回调plus(long, TemporalUnit)。请查阅数量实现的文档,以确定是否可以成功添加。

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

      指定者:
      plus 在接口 Temporal
      参数:
      amountToAdd - 要添加的数量,不为null
      返回:
      基于此日期时间的OffsetDateTime,具有所做的添加,不为null
      抛出:
      DateTimeException - 如果无法进行添加
      ArithmeticException - 如果发生数值溢出
    • plus

      public OffsetDateTime plus(long amountToAdd, TemporalUnit unit)
      返回添加了指定数量的副本的日期时间。

      这将返回一个OffsetDateTime,基于此日期时间,以单位的形式添加了数量。如果无法添加数量,因为单位不受支持或出于其他原因,则会抛出异常。

      如果字段是ChronoUnit,则通过LocalDateTime.plus(long, TemporalUnit)实现添加。偏移量不是计算的一部分,并且在结果中将保持不变。

      如果字段不是ChronoUnit,则通过调用TemporalUnit.addTo(Temporal, long)来获取此方法的结果,传递this作为参数。在这种情况下,单位确定是否以及如何执行添加。

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

      指定者:
      plus 在接口 Temporal
      参数:
      amountToAdd - 要添加到结果的单位的数量,可以为负数
      unit - 要添加的数量的单位,不为null
      返回:
      基于此日期时间的OffsetDateTime,具有添加了指定数量的单位,不为null
      抛出:
      DateTimeException - 如果无法进行添加
      UnsupportedTemporalTypeException - 如果单位不受支持
      ArithmeticException - 如果发生数值溢出
    • plusYears

      public OffsetDateTime plusYears(long years)
      返回添加了指定年数的OffsetDateTime的副本。

      此方法通过三个步骤将指定的年数添加到年份字段中:

      1. 将输入年份添加到年份字段
      2. 检查结果日期是否无效
      3. 如有必要,调整日期的日期为最后一个有效日期

      例如,2008-02-29(闰年)加一年将导致无效日期2009-02-29(标准年)。而不是返回无效结果,将选择该月的最后一个有效日期,即2009-02-28。

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

      参数:
      years - 要添加的年数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,具有添加了年数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • plusMonths

      public OffsetDateTime plusMonths(long months)
      返回添加指定月份数后的此OffsetDateTime的副本。

      此方法通过三个步骤将指定的数量添加到月份字段中:

      1. 将输入的月份添加到年份字段
      2. 检查结果日期是否无效
      3. 如有必要,调整日期的天数为最后一个有效日期

      例如,2007-03-31 加一个月将导致无效日期 2007-04-31。而不是返回无效结果,选择该月的最后一个有效日期,即 2007-04-30。

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

      参数:
      months - 要添加的月份数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,添加了月份,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • plusWeeks

      public OffsetDateTime plusWeeks(long weeks)
      返回添加指定周数后的此OffsetDateTime的副本。

      此方法将指定的周数添加到天数字段中,根据需要递增月份和年份字段,以确保结果保持有效。只有在超出最大/最小年份时,结果才无效。

      例如,2008-12-31 加一周将导致 2009-01-07。

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

      参数:
      weeks - 要添加的周数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,添加了周数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • plusDays

      public OffsetDateTime plusDays(long days)
      返回添加指定天数后的此OffsetDateTime的副本。

      此方法将指定的天数添加到天数字段中,根据需要递增月份和年份字段,以确保结果保持有效。只有在超出最大/最小年份时,结果才无效。

      例如,2008-12-31 加一天将导致 2009-01-01。

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

      参数:
      days - 要添加的天数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,添加了天数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • plusHours

      public OffsetDateTime plusHours(long hours)
      返回添加指定小时数后的此OffsetDateTime的副本。

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

      参数:
      hours - 要添加的小时数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,添加了小时数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • plusMinutes

      public OffsetDateTime plusMinutes(long minutes)
      返回添加指定分钟数后的此OffsetDateTime的副本。

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

      参数:
      minutes - 要添加的分钟数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,添加了分钟数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • plusSeconds

      public OffsetDateTime plusSeconds(long seconds)
      返回添加指定秒数后的此OffsetDateTime的副本。

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

      参数:
      seconds - 要添加的秒数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,添加了秒数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • plusNanos

      public OffsetDateTime plusNanos(long nanos)
      返回添加指定纳秒数后的此OffsetDateTime的副本。

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

      参数:
      nanos - 要添加的纳秒数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,添加了纳秒数,不为null
      抛出:
      DateTimeException - 如果无法将单位添加到此类型
    • minus

      public OffsetDateTime minus(TemporalAmount amountToSubtract)
      返回减去指定数量后的此日期时间的副本。

      返回一个OffsetDateTime,基于此日期时间,减去指定的数量。该数量通常是PeriodDuration,但也可以是实现TemporalAmount接口的任何其他类型。

      通过调用TemporalAmount.subtractFrom(Temporal)将计算委托给数量对象。数量的实现可以以任何希望的方式实现减法,但通常会回调minus(long, TemporalUnit)。请参阅数量实现的文档,以确定是否可以成功执行减法。

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

      指定者:
      minus 在接口 Temporal
      参数:
      amountToSubtract - 要减去的数量,不为null
      返回:
      基于此日期时间的OffsetDateTime,进行了减法操作,不为null
      抛出:
      DateTimeException - 如果无法进行减法操作
      ArithmeticException - 如果发生数值溢出
    • minus

      public OffsetDateTime minus(long amountToSubtract, TemporalUnit unit)
      返回减去指定数量后的此日期时间的副本。

      返回一个OffsetDateTime,基于此日期时间,减去单位的数量。如果无法减去数量,因为不支持该单位或出于其他原因,则会抛出异常。

      此方法等效于plus(long, TemporalUnit),其数量为负数。有关加法和减法的工作原理的完整描述,请参阅该方法。

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

      指定者:
      minus 在接口 Temporal
      参数:
      amountToSubtract - 要从结果中减去的单位数量,可以为负数
      unit - 要减去的单位,不为null
      返回:
      基于此日期时间的OffsetDateTime,减去了指定的数量,不为null
      抛出:
      DateTimeException - 如果无法进行减法操作
      UnsupportedTemporalTypeException - 如果不支持该单位
      ArithmeticException - 如果发生数值溢出
    • minusYears

      public OffsetDateTime minusYears(long years)
      返回减去指定年数后的此OffsetDateTime的副本。

      此方法通过三个步骤从年份字段中减去指定的数量:

      1. 从年份字段中减去输入的年数
      2. 检查结果日期是否无效
      3. 如有必要,调整日期的天数为最后一个有效日期

      例如,2008-02-29(闰年)减去一年将导致无效日期 2007-02-29(标准年)。而不是返回无效结果,选择该月的最后一个有效日期,即 2007-02-28。

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

      参数:
      years - 要减去的年数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了年数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • minusMonths

      public OffsetDateTime minusMonths(long months)
      返回减去指定月份数后的此OffsetDateTime的副本。

      此方法通过三个步骤从月份字段中减去指定的数量:

      1. 从年份字段中减去输入的月份
      2. 检查结果日期是否无效
      3. 如有必要,调整日期的天数为最后一个有效日期

      例如,2007-03-31 减去一个月将导致无效日期 2007-02-31。而不是返回无效结果,选择该月的最后一个有效日期,即 2007-02-28。

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

      参数:
      months - 要减去的月份数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了月份数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • minusWeeks

      public OffsetDateTime minusWeeks(long weeks)
      返回减去指定周数后的此OffsetDateTime的副本。

      此方法从天数字段中减去指定的周数,必要时递减月份和年份字段,以确保结果保持有效。仅当超出最大/最小年份时,结果才无效。

      例如,从2009-01-07减去一周将得到2008-12-31。

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

      参数:
      weeks - 要减去的周数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了周数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • minusDays

      public OffsetDateTime minusDays(long days)
      返回减去指定天数后的此OffsetDateTime的副本。

      此方法从天数字段中减去指定的数量,必要时递减月份和年份字段,以确保结果保持有效。仅当超出最大/最小年份时,结果才无效。

      例如,从2009-01-01减去一天将得到2008-12-31。

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

      参数:
      days - 要减去的天数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了天数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • minusHours

      public OffsetDateTime minusHours(long hours)
      返回减去指定小时数后的此OffsetDateTime的副本。

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

      参数:
      hours - 要减去的小时数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了小时数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • minusMinutes

      public OffsetDateTime minusMinutes(long minutes)
      返回减去指定分钟数后的此OffsetDateTime的副本。

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

      参数:
      minutes - 要减去的分钟数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了分钟数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • minusSeconds

      public OffsetDateTime minusSeconds(long seconds)
      返回减去指定秒数后的此OffsetDateTime的副本。

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

      参数:
      seconds - 要减去的秒数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了秒数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • minusNanos

      public OffsetDateTime minusNanos(long nanos)
      返回减去指定纳秒数后的此OffsetDateTime的副本。

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

      参数:
      nanos - 要减去的纳秒数,可以为负数
      返回:
      基于此日期时间的OffsetDateTime,减去了纳秒数,不为null
      抛出:
      DateTimeException - 如果结果超出支持的日期范围
    • query

      public <R> R query(TemporalQuery<R> query)
      使用指定的查询查询此日期时间。

      使用指定的查询策略对象查询此日期时间。 TemporalQuery对象定义了用于获取结果的逻辑。阅读查询的文档以了解此方法的结果。

      此方法的结果是通过在指定的查询上调用TemporalQuery.queryFrom(TemporalAccessor)方法,将this作为参数传递而获得的。

      指定者:
      query 在接口 TemporalAccessor
      类型参数:
      R - 结果的类型
      参数:
      query - 要调用的查询,不为null
      返回:
      查询结果,可能返回null(由查询定义)
      抛出:
      DateTimeException - 如果无法查询(由查询定义)
      ArithmeticException - 如果发生数值溢出(由查询定义)
    • adjustInto

      public Temporal adjustInto(Temporal temporal)
      调整指定的时间对象,使其具有与此对象相同的偏移量、日期和时间。

      返回一个与输入的可观察类型相同的时间对象,偏移量、日期和时间被更改为与此相同。

      此调整等同于使用Temporal.with(TemporalField, long)三次,传递ChronoField.EPOCH_DAYChronoField.NANO_OF_DAYChronoField.OFFSET_SECONDS作为字段。

      在大多数情况下,使用Temporal.with(TemporalAdjuster)来反转调用模式更清晰:

         // 这两行是等价的,但建议使用第二种方法
         temporal = thisOffsetDateTime.adjustInto(temporal);
         temporal = temporal.with(thisOffsetDateTime);
       

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

      指定者:
      adjustInto 在接口 TemporalAdjuster
      参数:
      temporal - 要调整的目标对象,不为null
      返回:
      调整后的对象,不为null
      抛出:
      DateTimeException - 如果无法进行调整
      ArithmeticException - 如果发生数值溢出
    • until

      public long until(Temporal endExclusive, TemporalUnit unit)
      根据指定单位计算到另一个日期时间的时间量。

      这将根据单个TemporalUnit计算两个OffsetDateTime对象之间的时间量。起始点和结束点分别为this和指定的日期时间。如果结束在开始之前,则结果将为负数。例如,可以使用startDateTime.until(endDateTime, DAYS)来计算两个日期时间之间的天数。

      传递给此方法的Temporal将使用from(TemporalAccessor)转换为OffsetDateTime。如果两个日期时间之间的偏移量不同,则规范化指定的结束日期时间以具有与此日期时间相同的偏移量。

      计算返回一个整数,表示两个日期时间之间的完整单位数。例如,在2012-06-15T00:00Z和2012-08-14T23:59Z之间的月数只有一个月,因为它比两个月短一分钟。

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

         // 这两行是等价的
         amount = start.until(end, MONTHS);
         amount = MONTHS.between(start, end);
       
      应根据哪种方式使代码更易读来进行选择。

      此方法为ChronoUnit实现了计算。支持单位NANOSMICROSMILLISSECONDSMINUTESHOURSHALF_DAYSDAYSWEEKSMONTHSYEARSDECADESCENTURIESMILLENNIAERAS。其他ChronoUnit值将抛出异常。

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

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

      指定者:
      until 在接口 Temporal
      参数:
      endExclusive - 结束日期(不包括),将其转换为OffsetDateTime,不为null
      unit - 用于测量时间量的单位,不为null
      返回:
      此日期时间与结束日期时间之间的时间量
      抛出:
      DateTimeException - 如果无法计算时间量,或无法将结束时间转换为OffsetDateTime
      UnsupportedTemporalTypeException - 如果不支持该单位
      ArithmeticException - 如果发生数值溢出
    • format

      public String format(DateTimeFormatter formatter)
      使用指定的格式化程序格式化此日期时间。

      将传递此日期时间给格式化程序以生成一个字符串。

      参数:
      formatter - 要使用的格式化程序,不能为空
      返回:
      格式化后的日期时间字符串,不能为空
      抛出:
      DateTimeException - 如果在打印过程中发生错误
    • atZoneSameInstant

      public ZonedDateTime atZoneSameInstant(ZoneId zone)
      将此日期时间与时区组合,创建一个ZonedDateTime,确保结果具有相同的时刻。

      返回一个由此日期时间和指定时区形成的ZonedDateTime。此转换将忽略可见的本地日期时间,而使用基础时刻。这避免了本地时间线间隙或重叠的任何问题。结果可能对诸如小时、分钟甚至日期等字段具有不同的值。

      要尝试保留字段的值,请使用atZoneSimilarLocal(ZoneId)。要使用偏移作为区域标识,请使用toZonedDateTime()

      参数:
      zone - 要使用的时区,不能为空
      返回:
      由此日期时间和指定时区形成的带时区的日期时间,不能为空
    • atZoneSimilarLocal

      public ZonedDateTime atZoneSimilarLocal(ZoneId zone)
      将此日期时间与时区组合,创建一个ZonedDateTime,尝试保持相同的本地日期和时间。

      返回一个由此日期时间和指定时区形成的ZonedDateTime。在可能的情况下,结果将具有与此对象相同的本地日期时间。

      时区规则,如夏令时,意味着本地时间线上并非每个时间都存在。如果根据规则本地日期时间处于间隙或重叠中,则使用解析器来确定结果的本地时间和偏移量。此方法使用ZonedDateTime.ofLocal(LocalDateTime, ZoneId, ZoneOffset),以尽可能保留此实例的偏移量。

      有两种方法可以更精细地控制间隙和重叠。如果您只想在重叠时使用较晚的偏移量,则在此方法之后立即调用ZonedDateTime.withLaterOffsetAtOverlap()

      要创建一个在本地时间线上相同时刻的带时区的日期时间,请使用atZoneSameInstant(ZoneId)。要使用偏移作为区域标识,请使用toZonedDateTime()

      参数:
      zone - 要使用的时区,不能为空
      返回:
      由此日期和时区的最早有效时间形成的带时区的日期时间,不能为空
    • toOffsetTime

      public OffsetTime toOffsetTime()
      将此日期时间转换为OffsetTime

      返回一个具有相同本地时间和偏移量的偏移时间。

      返回:
      表示时间和偏移量的OffsetTime,不能为空
    • toZonedDateTime

      public ZonedDateTime toZonedDateTime()
      使用偏移作为区域标识,将此日期时间转换为ZonedDateTime

      使用偏移作为区域标识创建最简单的ZonedDateTime

      要控制使用的时区,请参见atZoneSameInstant(ZoneId)atZoneSimilarLocal(ZoneId)

      返回:
      表示相同本地日期时间和偏移量的带时区的日期时间,不能为空
    • toInstant

      public Instant toInstant()
      将此日期时间转换为Instant

      返回一个表示与此日期时间相同时间线上的Instant

      返回:
      表示相同时刻的Instant,不能为空
    • toEpochSecond

      public long toEpochSecond()
      将此日期时间转换为从1970-01-01T00:00:00Z时代开始的秒数。

      这允许将此日期时间转换为epoch-seconds字段的值。这主要用于低级别转换,而不是一般应用程序使用。

      返回:
      从1970-01-01T00:00:00Z时代开始的秒数
    • compareTo

      public int compareTo(OffsetDateTime other)
      将此日期时间与另一个日期时间进行比较。

      比较基于时刻,然后是本地日期时间。它是“与equals一致”的,如Comparable所定义。

      例如,以下是比较顺序:

      1. 2008-12-03T10:30+01:00
      2. 2008-12-03T11:00+01:00
      3. 2008-12-03T12:00+02:00
      4. 2008-12-03T11:30+01:00
      5. 2008-12-03T12:00+01:00
      6. 2008-12-03T12:30+01:00
      值#2和#3代表时间线上的相同时刻。当两个值代表相同时刻时,将比较本地日期时间以区分它们。这一步是为了使排序与equals()一致。
      指定者:
      compareTo 在接口 Comparable<OffsetDateTime>
      参数:
      other - 要比较的另一个日期时间,不能为空
      返回:
      比较器值,即与other的时刻的比较,如果它们不相等;如果等于other的时刻,则比较other的本地日期时间
      参见:
    • isAfter

      public boolean isAfter(OffsetDateTime other)
      检查此日期时间的时刻是否在指定日期时间的时刻之后。

      此方法与compareTo(java.time.OffsetDateTime)equals(java.lang.Object)中的比较不同,因为它仅比较日期时间的时刻。这等效于使用dateTime1.toInstant().isAfter(dateTime2.toInstant());

      参数:
      other - 要比较的另一个日期时间,不能为空
      返回:
      如果此日期时间在指定日期时间的时刻之后,则为true
    • isBefore

      public boolean isBefore(OffsetDateTime other)
      检查此日期时间的时刻是否在指定日期时间的时刻之前。

      此方法与compareTo(java.time.OffsetDateTime)中的比较不同,因为它仅比较日期时间的时刻。这等效于使用dateTime1.toInstant().isBefore(dateTime2.toInstant());

      参数:
      other - 要比较的另一个日期时间,不能为空
      返回:
      如果此日期时间在指定日期时间的时刻之前,则为true
    • isEqual

      public boolean isEqual(OffsetDateTime other)
      检查此日期时间的时刻是否等于指定日期时间的时刻。

      此方法与compareTo(java.time.OffsetDateTime)equals(java.lang.Object)中的比较不同,因为它仅比较日期时间的时刻。这等效于使用dateTime1.toInstant().equals(dateTime2.toInstant());

      参数:
      other - 要比较的另一个日期时间,不能为空
      返回:
      如果时刻等于指定日期时间的时刻,则为true
    • equals

      public boolean equals(Object obj)
      检查此日期时间是否等于另一个日期时间。

      比较基于本地日期时间和偏移量。要比较时间线上相同的时刻,请使用isEqual(java.time.OffsetDateTime)。仅比较OffsetDateTime类型的对象,其他类型返回false。

      覆盖:
      equals 在类 Object
      参数:
      obj - 要检查的对象,null返回false
      返回:
      如果此日期时间等于另一个日期时间,则为true
      参见:
    • hashCode

      public int hashCode()
      此日期时间的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      一个适当的哈希码
      参见:
    • toString

      public String toString()
      将此日期时间输出为String,例如2007-12-03T10:15:30+01:00

      输出将是以下格式之一:

      • uuuu-MM-dd'T'HH:mmXXXXX
      • uuuu-MM-dd'T'HH:mm:ssXXXXX
      • uuuu-MM-dd'T'HH:mm:ss.SSSXXXXX
      • uuuu-MM-dd'T'HH:mm:ss.SSSSSSXXXXX
      • uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSSXXXXX
      使用的格式将是输出完整值的最短格式,其中省略的部分被假定为零。如果偏移量中的秒为零,则输出与ISO 8601兼容。
      覆盖:
      toString 在类 Object
      返回:
      此日期时间的字符串表示,不能为空