- java.lang.Object
-
- java.time.OffsetDateTime
-
- All Implemented Interfaces:
-
Serializable,Comparable<OffsetDateTime>,Temporal,TemporalAccessor,TemporalAdjuster
public final class OffsetDateTime extends Object implements Temporal, TemporalAdjuster, Comparable<OffsetDateTime>, Serializable
在ISO-2007-12-03T10:15:30+01:00UTC /格林威治偏移的日期时间,如2007-12-03T10:15:30+01:00。OffsetDateTime是具有偏移量的日期时间的不可变表示。 该类存储所有日期和时间字段,精度为纳秒,以及与UTC /格林威治的偏移量。 例如,值“2007年10月2日13:45.30.123456789 +02:00”可以存储在OffsetDateTime。OffsetDateTime,ZonedDateTime和Instant所有存储在时间线瞬间纳秒的精度。Instant是最简单的,只是代表瞬间。OffsetDateTime添加到UTC /格林威治的偏移量,这样可以获得当地的日期时间。ZonedDateTime添加全时区规则。目的在于使用
ZonedDateTime或Instant在较简单的应用中对数据进行建模。 当更详细地建模日期时间概念时,或者当与数据库或网络协议进行通信时,可以使用此类。这是一个value-based课; 对
OffsetDateTime实例使用身份敏感操作(包括引用等式(==),身份哈希码或同步)可能会产生不可预测的结果,应该避免。equals方法应用于比较。- 实现要求:
- 这个类是不可变的和线程安全的。
- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field 描述 static OffsetDateTimeMAX最大支持OffsetDateTime,'+ 999999999-12-31T23:59:59.999999999-18:00'。static OffsetDateTimeMIN最低支持OffsetDateTime:00:00 + 18:00'。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 TemporaladjustInto(Temporal temporal)调整指定的时间对象与此对象具有相同的偏移量,日期和时间。ZonedDateTimeatZoneSameInstant(ZoneId zone)将此日期时间与时区组合,以创建一个ZonedDateTime确保结果具有相同的时刻。ZonedDateTimeatZoneSimilarLocal(ZoneId zone)将此日期时间与时区组合,以创建一个ZonedDateTime尝试保持相同的本地日期和时间。intcompareTo(OffsetDateTime other)将此日期时间与其他日期时间进行比较。booleanequals(Object obj)检查此日期时间是否等于另一个日期时间。Stringformat(DateTimeFormatter formatter)使用指定的格式化程序格式化此日期时间。static OffsetDateTimefrom(TemporalAccessor temporal)从时间对象获取OffsetDateTime的实例。intget(TemporalField field)从此日期时间获取指定字段的值作为int。intgetDayOfMonth()获取月份字段。DayOfWeekgetDayOfWeek()获取星期几字段,这是一个枚举DayOfWeek。intgetDayOfYear()获得日期字段。intgetHour()获取时间字段。longgetLong(TemporalField field)从此日期时间获取指定字段的值作为long。intgetMinute()获取小时字段。MonthgetMonth()使用Month枚举获取月份字段。intgetMonthValue()将月份字段从1到12。intgetNano()获得纳秒第二场。ZoneOffsetgetOffset()获取区域偏移量,例如“+01:00”。intgetSecond()获得第二分钟的字段。intgetYear()获取年份字段。inthashCode()这个日期时间的哈希码。booleanisAfter(OffsetDateTime other)检查此日期时间是否在指定的日期时间之后。booleanisBefore(OffsetDateTime other)检查此日期时间是否在指定的日期时间之前。booleanisEqual(OffsetDateTime other)检查此日期时间的时间是否等于指定的日期时间。booleanisSupported(TemporalField field)检查指定的字段是否受支持。booleanisSupported(TemporalUnit unit)检查指定的单位是否受支持。OffsetDateTimeminus(long amountToSubtract, TemporalUnit unit)返回此日期时间的副本,并减去指定的金额。OffsetDateTimeminus(TemporalAmount amountToSubtract)返回此日期时间的副本,并减去指定的金额。OffsetDateTimeminusDays(long days)返回此OffsetDateTime的副本,并减去指定的天数。OffsetDateTimeminusHours(long hours)返回此OffsetDateTime的副本,并减去指定的小时数。OffsetDateTimeminusMinutes(long minutes)返回此OffsetDateTime的副本,并减去指定的分钟数。OffsetDateTimeminusMonths(long months)返回此OffsetDateTime的副本,并减去指定的月数。OffsetDateTimeminusNanos(long nanos)返回此OffsetDateTime的副本,并减去指定的纳秒数。OffsetDateTimeminusSeconds(long seconds)返回此OffsetDateTime的副本,并减去指定的秒数。OffsetDateTimeminusWeeks(long weeks)返回此OffsetDateTime的副本,并OffsetDateTime指定的周数。OffsetDateTimeminusYears(long years)返回此OffsetDateTime的副本,并减去指定的年数。static OffsetDateTimenow()从默认时区的系统时钟获取当前的日期时间。static OffsetDateTimenow(Clock clock)从指定的时钟获取当前的日期时间。static OffsetDateTimenow(ZoneId zone)从指定时区的系统时钟获取当前的日期时间。static OffsetDateTimeof(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneOffset offset)从年,月,日,小时,分,秒,纳秒和偏移中获取OffsetDateTime的实例。static OffsetDateTimeof(LocalDate date, LocalTime time, ZoneOffset offset)从日期,时间和偏移量获取OffsetDateTime的实例。static OffsetDateTimeof(LocalDateTime dateTime, ZoneOffset offset)从日期时间和偏移量获取OffsetDateTime的实例。static OffsetDateTimeofInstant(Instant instant, ZoneId zone)从Instant和区域ID获取OffsetDateTime的实例。static OffsetDateTimeparse(CharSequence text)从2007-12-03T10:15:30+01:00等文本字符串获取OffsetDateTime的实例。static OffsetDateTimeparse(CharSequence text, DateTimeFormatter formatter)使用特定的格式化程序从文本字符串获取OffsetDateTime的实例。OffsetDateTimeplus(long amountToAdd, TemporalUnit unit)返回此日期时间的副本,并添加指定的数量。OffsetDateTimeplus(TemporalAmount amountToAdd)返回此日期时间的副本,并添加指定的数量。OffsetDateTimeplusDays(long days)以指定的天数返回此OffsetDateTime的副本。OffsetDateTimeplusHours(long hours)返回此OffsetDateTime的副本,并附加指定的小时数。OffsetDateTimeplusMinutes(long minutes)以指定的分钟数返回此OffsetDateTime的副本。OffsetDateTimeplusMonths(long months)返回此OffsetDateTime的副本,并附加指定的月数。OffsetDateTimeplusNanos(long nanos)返回此OffsetDateTime的副本,OffsetDateTime添加了指定的纳秒数。OffsetDateTimeplusSeconds(long seconds)返回此OffsetDateTime的副本,并添加指定的秒数。OffsetDateTimeplusWeeks(long weeks)返回添加了指定周数的此OffsetDateTime的副本。OffsetDateTimeplusYears(long years)返回此OffsetDateTime的副本,并附加指定的年数。<R> Rquery(TemporalQuery<R> query)使用指定的查询查询此日期时间。ValueRangerange(TemporalField field)获取指定字段的有效值的范围。static Comparator<OffsetDateTime>timeLineOrder()获得一个比较器,只比较两个OffsetDateTime实例。longtoEpochSecond()将此日期时间转换为从1970-01-01T00:00:00Z的时期开始的秒数。InstanttoInstant()将此日期时间转换为Instant。LocalDatetoLocalDate()获取此日期时间的LocalDate部分。LocalDateTimetoLocalDateTime()获取此日期时间的LocalDateTime部分。LocalTimetoLocalTime()获取此日期时间的LocalTime部分。OffsetTimetoOffsetTime()将此日期时间转换为OffsetTime。StringtoString()将此日期时间输出为String,如2007-12-03T10:15:30+01:00。ZonedDateTimetoZonedDateTime()将此日期时间转换为ZonedDateTime使用偏移量作为区域ID。OffsetDateTimetruncatedTo(TemporalUnit unit)返回此OffsetDateTime的副本,截断时间。longuntil(Temporal endExclusive, TemporalUnit unit)根据指定的单位计算到另一个日期时间的时间量。OffsetDateTimewith(TemporalAdjuster adjuster)返回此日期时间的调整副本。OffsetDateTimewith(TemporalField field, long newValue)返回此日期时间的副本,并将指定的字段设置为新值。OffsetDateTimewithDayOfMonth(int dayOfMonth)返回OffsetDateTime的副本,并更改日期。OffsetDateTimewithDayOfYear(int dayOfYear)返回这个OffsetDateTime的副本,OffsetDateTime更改日期。OffsetDateTimewithHour(int hour)返回此OffsetDateTime的副本,并更改日期。OffsetDateTimewithMinute(int minute)返回此OffsetDateTime的副本,小时改变。OffsetDateTimewithMonth(int month)返回该OffsetDateTime的副本。OffsetDateTimewithNano(int nanoOfSecond)返回这个OffsetDateTime的副本,OffsetDateTime改变了。OffsetDateTimewithOffsetSameInstant(ZoneOffset offset)以指定的偏移量返回此OffsetDateTime的副本,确保结果处于同一时刻。OffsetDateTimewithOffsetSameLocal(ZoneOffset offset)返回具有指定偏移量的OffsetDateTime的副本,确保结果具有相同的本地日期时间。OffsetDateTimewithSecond(int second)返回此OffsetDateTime的副本,其中第二分钟更改。OffsetDateTimewithYear(int year)返回这个OffsetDateTime的副本,年份被更改。
-
-
-
字段详细信息
-
MIN
public static final OffsetDateTime MIN
最低支持OffsetDateTime:00:00 + 18:00'。 这是在最大偏移量的最小日期开始的午夜的当地日期时间(更大的偏移在时间线上较早)。 这结合了LocalDateTime.MIN和ZoneOffset.MAX。 这可以被应用程序用作“过去”的日期。
-
MAX
public static final OffsetDateTime MAX
最大支持OffsetDateTime,'+ 999999999-12-31T23:59:59.999999999-18:00'。 这是在最小偏移量的最大日期结束之前的午夜之前的当地日期时间(较大的负偏移量稍后在时间线上)。 这结合了LocalDateTime.MAX和ZoneOffset.MIN。 这个应用程序可以作为“远未来”的日期时间使用。
-
-
方法详细信息
-
timeLineOrder
public static Comparator<OffsetDateTime> timeLineOrder()
获得一个比较器,只比较两个OffsetDateTime实例。这种方法与
compareTo(java.time.OffsetDateTime)中的比较不同之处在于它只比较了潜在的时刻。- 结果
- 比较器可以按时间顺序进行比较
- 另请参见:
-
isAfter(java.time.OffsetDateTime),isBefore(java.time.OffsetDateTime),isEqual(java.time.OffsetDateTime)
-
now
public static OffsetDateTime now()
- 结果
- 当前日期时间使用系统时钟,不为空
-
now
public static OffsetDateTime now(ZoneId zone)
从指定时区的系统时钟获取当前的日期时间。这将查询
system clock以获取当前日期。 指定时区可以避免对默认时区的依赖。 偏移量将从指定的时区计算。使用此方法将阻止使用备用时钟进行测试,因为时钟是硬编码的。
- 参数
-
zone- 要使用的区域ID,不为空 - 结果
- 当前日期时间使用系统时钟,不为空
-
now
public static OffsetDateTime now(Clock clock)
从指定的时钟获取当前的日期时间。这将查询指定的时钟以获取当前的日期时间。 偏移量将从时钟的时区计算。
使用此方法可以使用备用时钟进行测试。 可以使用
dependency injection引入备用时钟。- 参数
-
clock- 要使用的时钟,不为空 - 结果
- 当前日期时间,不为null
-
of
public static OffsetDateTime of(LocalDate date, LocalTime time, ZoneOffset offset)
从日期,时间和偏移量获取OffsetDateTime的实例。这将创建具有指定的本地日期,时间和偏移量的偏移日期时间。
- 参数
-
date- 本地日期,不为空 -
time- 当地时间,不为空 -
offset- 区域偏移,不为空 - 结果
- 偏移日期时间,不为null
-
of
public static OffsetDateTime of(LocalDateTime dateTime, ZoneOffset offset)
从日期时间和偏移量获取OffsetDateTime的实例。这将创建具有指定的本地日期时间和偏移量的偏移日期时间。
- 参数
-
dateTime- 本地日期时间,不为空 -
offset- 区域偏移,不为空 - 结果
- 偏移日期时间,不为null
-
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月1日至12日(12月)的月份, -
dayOfMonth- 代表从1到31的月份 -
hour- 代表从0到23的小时 -
minute- 表示从0到59的小时 -
second- 从0到59的秒表示 -
nanoOfSecond- 表示从0到999,999,999的纳秒 -
offset- 区域偏移,不为空 - 结果
- 偏移日期时间,不为null
- 异常
-
DateTimeException- 如果任何字段的值超出范围,或者如果月的日期对于月份无效
-
ofInstant
public static OffsetDateTime ofInstant(Instant instant, ZoneId zone)
从Instant和区域ID获取OffsetDateTime的实例。这将创建与指定的相同时间的偏移日期时间。 找到UTC /格林威治的偏移量很简单,因为每个瞬间只有一个有效的偏移量。
- 参数
-
instant- 即时创建日期时间,不为null -
zone- 可能是偏移的时区,不为空 - 结果
- 偏移日期时间,不为null
- 异常
-
DateTimeException- 如果结果超出了支持范围
-
from
public static OffsetDateTime from(TemporalAccessor temporal)
从时间对象获取一个OffsetDateTime的实例。这将基于指定的时间获得偏移日期时间。 A
TemporalAccessor代表日期和时间信息的任意集合,该工厂转换为OffsetDateTime一个实例。转换将首先从时间对象获取一个
ZoneOffset。 然后会尝试获得一个LocalDateTime,如果需要的话可以回到Instant。 结果将是ZoneOffset与LocalDateTime或Instant。 允许实现执行优化,例如访问与相关对象相当的那些字段。该方法匹配功能界面
TemporalQuery的签名,允许它通过方法参考OffsetDateTime::from作为查询使用。- 参数
-
temporal- 要转换的时间对象,不为null - 结果
- 偏移日期时间,不为null
- 异常
-
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”,不为空 - 结果
- 解析的偏移日期时间,不为null
- 异常
-
DateTimeParseException- 如果文本无法解析
-
parse
public static OffsetDateTime parse(CharSequence text, DateTimeFormatter formatter)
使用特定的格式化OffsetDateTime从文本字符串获取OffsetDateTime的实例。使用格式化程序解析文本,返回日期时间。
- 参数
-
text- 要解析的文本,不为空 -
formatter- 要使用的格式化程序,不为null - 结果
- 解析的偏移日期时间,不为null
- 异常
-
DateTimeParseException- 如果文本无法解析
-
isSupported
public boolean isSupported(TemporalField field)
检查指定的字段是否受支持。这将检查是否可以查询指定字段的日期时间。 如果是假,然后调用
range,get和with(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作为参数。 字段是否受支持由字段决定。- Specified by:
-
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作为参数。 设备是否受支持由本机决定。- Specified by:
-
isSupported在接口Temporal - 参数
-
unit- 要检查的单位,null返回false - 结果
- 如果可以添加/减去单位,则为真,否则为false
-
-
range
public ValueRange range(TemporalField field)
获取指定字段的有效值的范围。范围对象表示字段的最小和最大有效值。 此日期时间用于提高返回范围的准确性。 如果不可能返回范围,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是
ChronoField,那么查询是在这里实现的。supported fields将返回适当的范围实例。 所有其他ChronoField实例将抛出一个UnsupportedTemporalTypeException。如果该字段是不是一个
ChronoField,则此方法的结果是通过调用得到TemporalField.rangeRefinedBy(TemporalAccessor)传递this作为参数。 是否可以获得范围由字段确定。- Specified by:
-
range在接口TemporalAccessor - 参数
-
field- 查询范围的字段,不为null - 结果
- 字段的有效值的范围不为null
- 异常
-
DateTimeException- 如果不能获得该字段的范围 -
UnsupportedTemporalTypeException- 如果不支持该字段
-
get
public int get(TemporalField field)
从此日期时间获取指定字段的值为int。这将查询指定字段的值的此日期时间。 返回的值将始终在该字段的值的有效范围内。 如果不可能返回值,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是
ChronoField,那么查询是在这里实现的。 该supported fields将返回基于此日期时间有效值,除了NANO_OF_DAY,MICRO_OF_DAY,EPOCH_DAY,PROLEPTIC_MONTH和INSTANT_SECONDS这是太大,无法在int并抛出UnsupportedTemporalTypeException。 所有其他ChronoField实例将抛出一个UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.getFrom(TemporalAccessor)通过this作为参数获得此方法的结果。 该值是否可以获得,该值代表什么值由该字段决定。- Specified by:
-
get在接口TemporalAccessor - 参数
-
field- 要获取的字段,不为空 - 结果
- 该字段的值
- 异常
-
DateTimeException- 如果无法获取字段的值,或者该值超出了该字段的有效值的范围 -
UnsupportedTemporalTypeException- 如果该字段不受支持或值的范围超过int -
ArithmeticException- 如果发生数字溢出
-
getLong
public long getLong(TemporalField field)
从此日期时间获取指定字段的值为long。这将查询指定字段的值的此日期时间。 如果不可能返回值,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果字段是
ChronoField,那么查询是在这里实现的。supported fields将根据此日期时间返回有效值。 所有其他ChronoField实例将抛出一个UnsupportedTemporalTypeException。如果该字段是不是一个
ChronoField,则此方法的结果是通过调用得到TemporalField.getFrom(TemporalAccessor)传递this作为参数。 该值是否可以获得,该值代表什么值由该字段决定。- Specified by:
-
getLong在接口TemporalAccessor - 参数
-
field- 要获取的字段,不为null - 结果
- 该字段的值
- 异常
-
DateTimeException- 如果无法获得该字段的值 -
UnsupportedTemporalTypeException- 如果该字段不被支持 -
ArithmeticException- 如果发生数字溢出
-
getOffset
public ZoneOffset getOffset()
获取区域偏移量,例如“+01:00”。这是当地时间与UTC /格林威治的抵消。
- 结果
- 区域偏移,不为空
-
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基于这个日期时间与请求的偏移量,不为null
-
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基于此日期时间与请求的偏移量,不为null - 异常
-
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如果通过调用getMonth()使用枚举Month,则应用代码通常更清晰。- 结果
- 从1到12年的月份
- 另请参见:
-
getMonth()
-
getMonth
public Month getMonth()
- 结果
- 月份,不为零
- 另请参见:
-
getMonthValue()
-
getDayOfMonth
public int getDayOfMonth()
获取月份字段。此方法返回
int的原始值int值。- 结果
- 从1到31日
-
getDayOfYear
public int getDayOfYear()
获得日期字段。此方法返回
int的原始值int值。- 结果
- 一年中,从1到365,或闰年366
-
getDayOfWeek
public DayOfWeek getDayOfWeek()
获取星期几字段,这是一个枚举DayOfWeek。此方法返回星期几的枚举
DayOfWeek。 这避免了int值意味着什么的混乱。 如果您需要访问原始的int值,则枚举将提供int value。更多信息可以从
DayOfWeek获得。 这包括值的文本名称。- 结果
- 星期几不为零
-
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界面,如Month和MonthDay。 调整员负责处理特殊情况,如月份和闰年的不同长度。例如这个代码在7月的最后一天返回一个日期:
import static java.time.Month.*; import static java.time.temporal.TemporalAdjusters.*; result = offsetDateTime.with(JULY).with(lastDayOfMonth());类
LocalDate,LocalTime和ZoneOffset实施TemporalAdjuster,从而可以用这种方法来改变日期,时间或偏移:result = offsetDateTime.with(date); result = offsetDateTime.with(time); result = offsetDateTime.with(offset);该方法的结果是通过调用
TemporalAdjuster.adjustInto(Temporal)方法在指定的调整器上通过this作为参数获得的。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
with在接口Temporal - 参数
-
adjuster- 调整器使用,不为空 - 结果
-
一个
OffsetDateTime基于this进行了调整,不为null - 异常
-
DateTimeException- 如果不能进行调整 -
ArithmeticException- 如果发生数字溢出
-
with
public OffsetDateTime with(TemporalField field, long newValue)
返回此日期时间的副本,并将指定的字段设置为新值。这将返回一个
OffsetDateTime,基于此,更改指定字段的值。 这可以用于更改任何支持的字段,例如年,月或月。 如果不可能设置该值,因为该字段不受支持或出于某种其他原因,则抛出异常。在某些情况下,更改指定的字段可能会导致生成的日期时间无效,例如将月份从1月31日更改为2月将导致日期无效。 在这种情况下,该领域负责解决日期。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
如果现场是
ChronoField,那么在这里实现调整。INSTANT_SECONDS字段将返回指定时间的日期时间。 偏移和纳秒不变。 如果新的即时值超出有效范围,则将抛出DateTimeException。OFFSET_SECONDS字段将返回指定偏移量的日期时间。 当地的日期时间是不变的。 如果新的偏移值超出有效范围,则将抛出DateTimeException。其他
supported fields将按照LocalDateTime的匹配方法进行操作 。 在这种情况下,偏移不是计算的一部分,将不会改变。所有其他
ChronoField实例将抛出一个UnsupportedTemporalTypeException。如果该字段不是
ChronoField,则通过调用TemporalField.adjustInto(Temporal, long)通过this作为参数获得该方法的结果。 在这种情况下,该字段决定是否以及如何调整即时。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
with在接口Temporal - 参数
-
field- 要在结果中设置的字段,不为null -
newValue- 结果中字段的新值 - 结果
-
一个
OffsetDateTime基于this与指定的字段集,不为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月(1月)到12月(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的副本。时间和偏移量不影响计算,结果将相同。 如果生成的
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之间设置结果的second - 结果
-
一个
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 ,分为标准日期的长度, 无余数。 这包括所有提供的时间单位
ChronoUnit和DAYS。 其他单位抛出异常。偏移量不影响计算,结果将相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
unit- 截断到的单位,不为null - 结果
-
一个
OffsetDateTime基于这个日期时间截断,不为null - 异常
-
DateTimeException- 如果无法截断 -
UnsupportedTemporalTypeException- 如果不支持本机
-
plus
public OffsetDateTime plus(TemporalAmount amountToAdd)
返回此日期时间的副本,并添加指定的数量。这将返回一个
OffsetDateTime,基于此,添加指定的数量。 金额通常为Period或Duration,但可能是实现TemporalAmount接口的任何其他类型。通过调用
TemporalAmount.addTo(Temporal)将计算委托给金额对象。 金额实施可以以任何方式实现添加,但是它通常会回调到plus(long, TemporalUnit)。 请参阅金额执行的文档,以确定是否可以成功添加。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
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作为参数。 在这种情况下,单元确定是否以及如何执行添加。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
plus在接口Temporal - 参数
-
amountToAdd- 添加到结果中的单位数量可能为负数 -
unit- 要添加的单位,不为null - 结果
-
一个
OffsetDateTime基于这个日期时间加上指定的数量,不为null - 异常
-
DateTimeException- 如果不能添加 -
UnsupportedTemporalTypeException- 如果不支持本机 -
ArithmeticException- 如果发生数字溢出
-
plusYears
public OffsetDateTime plusYears(long years)
以指定的年数返回此OffsetDateTime的副本。该方法通过三个步骤将指定的数量添加到年份字段:
- 将输入年份添加到年份字段
- 检查结果日期是否无效
- 如果有必要,将月份调整到最后一个有效日期
例如,2008-02-29(闰年)加上一年将导致无效日期2009-02-29(标准年)。 而不是返回无效结果,而是选择2009-02-28的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
years- 增加的年份,可能是负数 - 结果
-
一个
OffsetDateTime基于这个日期时间与添加的年份,不为null - 异常
-
DateTimeException- 如果结果超出了支持的日期范围
-
plusMonths
public OffsetDateTime plusMonths(long months)
返回此OffsetDateTime的副本,并附加指定的月数。此方法通过三个步骤将指定的数量添加到月份字段:
- 将输入的月份添加到月份字段
- 检查结果日期是否无效
- 如果有必要,将月份调整到最后一个有效日期
例如,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-nanos添加,可能是负数 - 结果
-
一个
OffsetDateTime基于这个日期时间加上纳秒,不为null - 异常
-
DateTimeException- 如果单位无法添加到此类型
-
minus
public OffsetDateTime minus(TemporalAmount amountToSubtract)
返回此日期时间的副本,并减去指定的金额。这将返回一个
OffsetDateTime,基于此,减去指定的数量。 金额通常为Period或Duration,但可能是实现TemporalAmount界面的任何其他类型。通过调用
TemporalAmount.subtractFrom(Temporal)将计算委托给金额对象。 数量执行可以以任何方式自由实现减法,但通常可以回调到minus(long, TemporalUnit)。 请参阅数量执行的文档,以确定是否可以成功减去它们。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
minus在接口Temporal - 参数
-
amountToSubtract- 减去量,不为空 - 结果
-
一个
OffsetDateTime基于这个日期时间与减法而不是null - 异常
-
DateTimeException- 如果不能进行减法 -
ArithmeticException- 如果发生数字溢出
-
minus
public OffsetDateTime minus(long amountToSubtract, TemporalUnit unit)
返回此日期时间的副本,并减去指定的金额。这将返回一个
OffsetDateTime,基于这一个,减去的单位数量。 如果不可能减去金额,因为该单位不受支持或出于某种其他原因,则会抛出异常。这种方法相当于
plus(long, TemporalUnit),数量被否定。 请参阅该方法,以了解如何添加,从而减去运算。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
minus在接口Temporal - 参数
-
amountToSubtract- 从结果中减去的单位数量可能为负数 -
unit- 减去量的单位,不为空 - 结果
-
一个
OffsetDateTime基于这个日期时间减去指定的数量,不为null - 异常
-
DateTimeException- 如果不能进行减法 -
UnsupportedTemporalTypeException- 如果不支持本机 -
ArithmeticException- 如果发生数字溢出
-
minusYears
public OffsetDateTime minusYears(long years)
返回此OffsetDateTime的副本,并减去指定的年数。该方法从三个步骤中减去指定的数量:
- 从年度字段减去输入年数
- 检查结果日期是否无效
- 如果有必要,将月份调整到最后一个有效日期
例如,2008-02-29(闰年)减去一年将导致无效日期2007-02-29(标准年)。 而不是返回无效结果,而是选择2007-02-28的该月份的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
years- 减去年份,可能为负数 - 结果
-
一个
OffsetDateTime基于这个日期时间与减去的年份,不为null - 异常
-
DateTimeException- 如果结果超出支持的日期范围
-
minusMonths
public OffsetDateTime minusMonths(long months)
返回此OffsetDateTime的副本,并减去指定的月数。该方法从以下三个步骤中减去月份字段中指定的数量:
- 从月份字段减去输入月份
- 检查结果日期是否无效
- 如果有必要,将月份调整到最后一个有效日期
例如,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基于这个日期时间减去分钟,不为空 - 异常
-
DateTimeException- 如果结果超出支持的日期范围
-
minusSeconds
public OffsetDateTime minusSeconds(long seconds)
返回此OffsetDateTime的副本,并减去指定的秒数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
seconds- 减去秒数,可能为负数 - 结果
-
一个
OffsetDateTime基于这个日期时间减去秒,而不是null - 异常
-
DateTimeException- 如果结果超出支持的日期范围
-
minusNanos
public OffsetDateTime minusNanos(long nanos)
返回此OffsetDateTime的副本,并减去指定的纳秒数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
nanos-nanos减去,可能是负数 - 结果
-
一个
OffsetDateTime基于这个日期时间减去纳秒,不为null - 异常
-
DateTimeException- 如果结果超出支持的日期范围
-
query
public <R> R query(TemporalQuery<R> query)
使用指定的查询查询此日期时间。这将使用指定的查询策略对象查询此日期时间。
TemporalQuery对象定义了用于获取结果的逻辑。 阅读查询的文档,以了解该方法的结果。该方法的结果是通过在
this作为参数的指定查询上调用TemporalQuery.queryFrom(TemporalAccessor)方法获得的。- Specified by:
-
query在接口TemporalAccessor - 参数类型
-
R- 结果的类型 - 参数
-
query- 要调用的查询,不为空 - 结果
- 查询结果可能返回null(由查询定义)
- 异常
-
DateTimeException- 如果无法查询(由查询定义) -
ArithmeticException- 如果发生数字溢出(由查询定义)
-
adjustInto
public Temporal adjustInto(Temporal temporal)
调整指定的时间对象与此对象具有相同的偏移量,日期和时间。这返回与偏移量相同的可观察类型的时间对象,偏移量,日期和时间更改为与此相同。
该调整是相当于使用
Temporal.with(TemporalField, long)两三次,传球ChronoField.EPOCH_DAY,ChronoField.NANO_OF_DAY和ChronoField.OFFSET_SECONDS作为字段。在大多数情况下,通过使用
Temporal.with(TemporalAdjuster)来更正呼叫模式:// these two lines are equivalent, but the second approach is recommended temporal = thisOffsetDateTime.adjustInto(temporal); temporal = temporal.with(thisOffsetDateTime);此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
adjustInto在接口TemporalAdjuster - 参数
-
temporal- 要调整的目标对象,不为null - 结果
- 调整对象,不为null
- 异常
-
DateTimeException- 如果无法做出调整 -
ArithmeticException- 如果发生数字溢出
-
until
public long until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算到另一个日期时间的时间量。这可以计算一个
OffsetDateTime对象之间的时间量,单个TemporalUnit。 起点和终点是this和指定的日期时间。 如果结束在开始之前,结果将为负数。 例如,可以使用startDateTime.until(endDateTime, DAYS)计算两个日期时间之间的天startDateTime.until(endDateTime, DAYS)。所述
Temporal传递给此方法被转换为OffsetDateTime使用from(TemporalAccessor)。 如果偏移量在两个日期时间之间不同,则指定的结束日期时间被归一化为与此日期时间相同的偏移量。计算返回一个整数,表示两个日期时间之间的完整单位数。 例如,2012-06-15T00:00Z和2012-08-14T23:59Z之间的月数将只有一个月,因为是两个月不到一分钟。
使用这种方法有两种等效的方法。 第一个是调用这个方法。 二是使用
TemporalUnit.between(Temporal, Temporal):// these two lines are equivalent amount = start.until(end, MONTHS); amount = MONTHS.between(start, end);应该根据这种做法进行选择,使代码更易读。计算方法为
ChronoUnit。 单位NANOS,MICROS,MILLIS,SECONDS,MINUTES,HOURS和HALF_DAYS,DAYS,WEEKS,MONTHS,YEARS,DECADES,CENTURIES,MILLENNIA和ERAS的支持。 其他ChronoUnit值会抛出异常。如果该单元不是
ChronoUnit,则此方法的结果是通过调用得到TemporalUnit.between(Temporal, Temporal)传递this作为第一个参数和转换后的输入时间作为第二个参数。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
until在接口Temporal - 参数
-
endExclusive- 结束日期,排他,转换为OffsetDateTime,不为空 -
unit- 衡量金额的单位,不为空 - 结果
- 在此日期和结束日期时间之间的时间量
- 异常
-
DateTimeException- 如果不能计算金额,或者结束时间不能转换为OffsetDateTime -
UnsupportedTemporalTypeException- 如果不支持本机 -
ArithmeticException- 如果发生数字溢出
-
format
public String format(DateTimeFormatter formatter)
使用指定的格式化程序格式化此日期时间。这个日期时间将传递给格式化程序以生成一个字符串。
- 参数
-
formatter- 格式化程序使用,不为空 - 结果
- 格式化的日期时间字符串,不为空
- 异常
-
DateTimeException- 打印时是否发生错误
-
atZoneSameInstant
public ZonedDateTime atZoneSameInstant(ZoneId zone)
将此日期时间与时区组合,创建一个ZonedDateTime确保结果具有相同的时间。这将从此日期时间和指定的时区返回一个
ZonedDateTime。 此转换将忽略可见的本地日期时间,并使用底层即时代替。 这避免了当地时间线间隙或重叠的任何问题。 结果可能会有不同的值,例如小时,分钟甚至偶数天。要尝试保留字段的值,请使用
atZoneSimilarLocal(ZoneId)。 要使用偏移量作为区域ID,请使用toZonedDateTime()。- 参数
-
zone- 使用的时区,不为空 - 结果
- 从这个日期时间形成的划分的日期时间,不为null
-
atZoneSimilarLocal
public ZonedDateTime atZoneSimilarLocal(ZoneId zone)
将此日期时间与时区组合,以创建一个ZonedDateTime尝试保持相同的本地日期和时间。这将返回一个从这个日期时间和指定的时区形成的
ZonedDateTime。 在可能的情况下,结果将具有与此对象相同的本地日期时间。时区规则,如夏令时,意味着不是每次当地时间线都存在。 如果本地日期时间根据规则处于间隙或重叠,则使用解析器来确定合成的本地时间和偏移量。 如果可能,此方法使用
ZonedDateTime.ofLocal(LocalDateTime, ZoneId, ZoneOffset)保留此实例的偏移量。间隙和重叠的更好的控制有两种方式。 如果您只想在重叠时使用稍后的偏移量,则在此方法后立即调用
ZonedDateTime.withLaterOffsetAtOverlap()。要在同一时刻创建分区的日期时间,无论本地时间线如何,请使用
atZoneSameInstant(ZoneId)。 要使用偏移量作为区域ID,请使用toZonedDateTime()。- 参数
-
zone- 使用的时区,不为空 - 结果
- 从该日期形成的划区日期时间和区域的最早有效时间,不为空
-
toOffsetTime
public OffsetTime toOffsetTime()
将此日期时间转换为OffsetTime。这将返回具有相同本地时间和偏移量的偏移时间。
- 结果
- 表示时间和偏移的OffsetTime,不为null
-
toZonedDateTime
public ZonedDateTime toZonedDateTime()
将此日期时间转换为ZonedDateTime使用偏移量作为区域ID。这将创建使用偏移作为区域ID的最简单的
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)
将此日期时间与其他日期时间进行比较。比较是基于当时的当地日期时间。 它与“等于”一致,如
Comparable所定义。例如,以下是比较器顺序:
-
2008-12-03T10:30+01:00 -
2008-12-03T11:00+01:00 -
2008-12-03T12:00+02:00 -
2008-12-03T11:30+01:00 -
2008-12-03T12:00+01:00 -
2008-12-03T12:30+01:00
equals()一致。- Specified by:
-
compareTo在接口Comparable<OffsetDateTime> - 参数
-
other- 其他日期时间来比较,不为null - 结果
- 比较器值为负,如果较小,则如果较大则为正
-
-
isAfter
public boolean isAfter(OffsetDateTime other)
检查此日期时间是否在指定的日期时间之后。该方法与
compareTo(java.time.OffsetDateTime)和equals(java.lang.Object)中的比较不同之处在于它仅比较日期时间的时间。 这相当于使用dateTime1.toInstant().isAfter(dateTime2.toInstant());。- 参数
-
other- 其他日期时间来比较,不为空 - 结果
- 如果这是在指定的日期时间之后,则为真
-
isBefore
public boolean isBefore(OffsetDateTime other)
检查此日期时间是否在指定的日期时间之前。该方法与
compareTo(java.time.OffsetDateTime)中的比较不同之处仅在于比较日期时间的时间。 这相当于使用dateTime1.toInstant().isBefore(dateTime2.toInstant());。- 参数
-
other- 其他日期时间来比较,不为null - 结果
- 如果这是在指定的日期时间之前,则为真
-
isEqual
public boolean isEqual(OffsetDateTime other)
检查此日期时间的时间是否等于指定的日期时间。该方法与
compareTo(java.time.OffsetDateTime)和equals(java.lang.Object)中的比较不同之处在于它仅比较日期时间的时间。 这相当于使用dateTime1.toInstant().equals(dateTime2.toInstant());。- 参数
-
other- 其他日期时间来比较,不为null - 结果
- 如果瞬间等于指定日期时间的时间,则为true
-
equals
public boolean equals(Object obj)
检查此日期时间是否等于另一个日期时间。比较是基于本地日期时间和偏移量。 要在时间线上相同的时间进行比较,请使用
isEqual(java.time.OffsetDateTime)。 只对OffsetDateTime类型的OffsetDateTime进行比较,其他类型返回false。- 重写:
-
equals在Object - 参数
-
obj- 要检查的对象,null返回false - 结果
- 如果这等于其他日期时间,则为true
- 另请参见:
-
Object.hashCode(),HashMap
-
hashCode
public int hashCode()
这个日期时间的哈希码。- 重写:
-
hashCode在Object - 结果
- 一个合适的哈希码
- 另请参见:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
toString
public String toString()
将此日期时间输出为String,如2007-12-03T10:15:30+01:00。输出将是以下ISO-8601格式之一:
-
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
-
-
-