- java.lang.Object
-
- java.time.OffsetDateTime
-
- 实现的所有接口
-
Serializable
,Comparable<OffsetDateTime>
,Temporal
,TemporalAccessor
,TemporalAdjuster
public final class OffsetDateTimeextends Objectimplements Temporal, TemporalAdjuster, Comparable<OffsetDateTime>, Serializable
ISO-2007-12-03T10:15:30+01:00
UTC / Greenwich偏移的日期时间,例如2007-12-03T10:15:30+01:00
。OffsetDateTime
是具有偏移量的日期时间的不可变表示。 此类存储所有日期和时间字段,精度为纳秒,以及与UTC / Greenwich的偏移量。 例如,值“2007年10月2日13:45:30.123456789 +02:00”可以存储在OffsetDateTime
。OffsetDateTime
,ZonedDateTime
和Instant
全部存储在时间线瞬间纳秒的精度。Instant
是最简单的,只是代表瞬间。OffsetDateTime
添加到UTC / Greenwich的偏移瞬间,这允许获得本地日期时间。ZonedDateTime
添加了完整的时区规则。ZonedDateTime
或Instant
用于在更简单的应用程序中建模数据。 在更详细地建模日期时间概念时,或者在与数据库或网络协议进行通信时,可以使用此类。这是一个value-based班; 在
OffsetDateTime
实例上使用身份敏感操作(包括引用相等(==
),标识哈希码或同步)可能会产生不可预测的结果,应该避免使用。 应使用equals
方法进行比较。- 实现要求:
- 这个类是不可变的和线程安全的。
- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 static OffsetDateTime
MAX
支持的最大值为OffsetDateTime
,'+ 999999999-12-31T23:59:59.999999999-18:00'。static OffsetDateTime
MIN
支持的最小值为OffsetDateTime
,' -OffsetDateTime
:00:00 + 18:00'。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 Temporal
adjustInto(Temporal temporal)
调整指定的时态对象,使其具有与此对象相同的偏移量,日期和时间。ZonedDateTime
atZoneSameInstant(ZoneId zone)
将此日期时间与时区组合以创建ZonedDateTime
,以确保结果具有相同的瞬间。ZonedDateTime
atZoneSimilarLocal(ZoneId zone)
将此日期时间与时区组合以创建ZonedDateTime
尝试保持相同的本地日期和时间。int
compareTo(OffsetDateTime other)
将此日期时间与另一个日期时间进行比较。boolean
equals(Object obj)
检查此日期时间是否等于另一个日期时间。String
format(DateTimeFormatter formatter)
使用指定的格式化程序格式化此日期时间。static OffsetDateTime
from(TemporalAccessor temporal)
从时态对象获得OffsetDateTime
的实例。int
get(TemporalField field)
从此日期时间获取指定字段的值,作为int
。int
getDayOfMonth()
获取日期字段。DayOfWeek
getDayOfWeek()
获取星期几字段,即枚举DayOfWeek
。int
getDayOfYear()
获取日期字段。int
getHour()
获取当日时间字段。long
getLong(TemporalField field)
从此日期时间获取指定字段的值,作为long
。int
getMinute()
获取分钟字段。Month
getMonth()
使用Month
枚举获取年份字段。int
getMonthValue()
获取1到12之间的月份字段。int
getNano()
获取纳秒级字段。ZoneOffset
getOffset()
获取区域偏移量,例如“+01:00”。int
getSecond()
获取第二分钟字段。int
getYear()
获取年份字段。int
hashCode()
此日期时间的哈希码。boolean
isAfter(OffsetDateTime other)
检查此日期时间的瞬间是否在指定日期时间之后。boolean
isBefore(OffsetDateTime other)
检查此日期时间的瞬间是否在指定日期时间之前。boolean
isEqual(OffsetDateTime other)
检查此日期时间的瞬间是否等于指定日期时间的瞬间。boolean
isSupported(TemporalField field)
检查是否支持指定的字段。boolean
isSupported(TemporalUnit unit)
检查指定的单元是否受支持。OffsetDateTime
minus(long amountToSubtract, TemporalUnit unit)
返回此日期时间的副本,并减去指定的数量。OffsetDateTime
minus(TemporalAmount amountToSubtract)
返回此日期时间的副本,并减去指定的数量。OffsetDateTime
minusDays(long days)
返回此OffsetDateTime
的副本,并减去指定的天数。OffsetDateTime
minusHours(long hours)
返回此OffsetDateTime
的副本,并减去指定的小时数。OffsetDateTime
minusMinutes(long minutes)
返回此OffsetDateTime
的副本,并减去指定的分钟数。OffsetDateTime
minusMonths(long months)
返回此OffsetDateTime
的副本,并减去指定的月数。OffsetDateTime
minusNanos(long nanos)
返回此OffsetDateTime
的副本,减去指定的纳秒数。OffsetDateTime
minusSeconds(long seconds)
返回此OffsetDateTime
的副本,并减去指定的秒数。OffsetDateTime
minusWeeks(long weeks)
返回此OffsetDateTime
的副本,并减去指定的周数。OffsetDateTime
minusYears(long years)
返回此OffsetDateTime
的副本,并减去指定的年数。static OffsetDateTime
now()
从默认时区中的系统时钟获取当前日期时间。static OffsetDateTime
now(Clock clock)
从指定的时钟获得当前日期时间。static OffsetDateTime
now(ZoneId zone)
从指定时区的系统时钟获取当前日期时间。static OffsetDateTime
of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneOffset offset)
从年,月,日,小时,分钟,秒,纳秒和偏移获得OffsetDateTime
的实例。static OffsetDateTime
of(LocalDate date, LocalTime time, ZoneOffset offset)
从日期,时间和偏移量获得OffsetDateTime
的实例。static OffsetDateTime
of(LocalDateTime dateTime, ZoneOffset offset)
从日期时间和偏移量获得OffsetDateTime
的实例。static OffsetDateTime
ofInstant(Instant instant, ZoneId zone)
从Instant
和区域ID获取OffsetDateTime
的实例。static OffsetDateTime
parse(CharSequence text)
从文本字符串(如2007-12-03T10:15:30+01:00
获取OffsetDateTime
的实例。static OffsetDateTime
parse(CharSequence text, DateTimeFormatter formatter)
使用特定格式化程序从文本字符串中获取OffsetDateTime
的实例。OffsetDateTime
plus(long amountToAdd, TemporalUnit unit)
返回此日期时间的副本,并添加指定的数量。OffsetDateTime
plus(TemporalAmount amountToAdd)
返回此日期时间的副本,并添加指定的数量。OffsetDateTime
plusDays(long days)
返回此OffsetDateTime的副本,并添加指定的天数。OffsetDateTime
plusHours(long hours)
返回此OffsetDateTime
的副本,并添加指定的小时数。OffsetDateTime
plusMinutes(long minutes)
返回此OffsetDateTime
的副本,并添加指定的分钟数。OffsetDateTime
plusMonths(long months)
返回此OffsetDateTime
的副本,并添加指定的月数。OffsetDateTime
plusNanos(long nanos)
返回此OffsetDateTime
的副本,OffsetDateTime
添加了指定的纳秒数。OffsetDateTime
plusSeconds(long seconds)
返回此OffsetDateTime
的副本,并添加指定的秒数。OffsetDateTime
plusWeeks(long weeks)
返回此OffsetDateTime的副本,并添加指定的周数。OffsetDateTime
plusYears(long years)
返回此OffsetDateTime
的副本,并添加指定的年数。<R> R
query(TemporalQuery<R> query)
使用指定的查询查询此日期时间。ValueRange
range(TemporalField field)
获取指定字段的有效值范围。static Comparator<OffsetDateTime>
timeLineOrder()
获取一个比较器,仅根据瞬间比较两个OffsetDateTime
实例。long
toEpochSecond()
将此日期时间转换为1970-01-01T00:00:00Z纪元的秒数。Instant
toInstant()
将此日期时间转换为Instant
。LocalDate
toLocalDate()
获取此日期时间的LocalDate
部分。LocalDateTime
toLocalDateTime()
获取此日期时间的LocalDateTime
部分。LocalTime
toLocalTime()
获取此日期时间的LocalTime
部分。OffsetTime
toOffsetTime()
将此日期时间转换为OffsetTime
。String
toString()
将此日期时间输出为String
,例如2007-12-03T10:15:30+01:00
。ZonedDateTime
toZonedDateTime()
使用偏移量作为区域ID将此日期时间转换为ZonedDateTime
。OffsetDateTime
truncatedTo(TemporalUnit unit)
返回此OffsetDateTime
的副本,并截断时间。long
until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算到另一个日期时间的时间量。OffsetDateTime
with(TemporalAdjuster adjuster)
返回此日期时间的调整副本。OffsetDateTime
with(TemporalField field, long newValue)
返回此日期时间的副本,并将指定字段设置为新值。OffsetDateTime
withDayOfMonth(int dayOfMonth)
返回此OffsetDateTime
的副本,并更改日期。OffsetDateTime
withDayOfYear(int dayOfYear)
返回此OffsetDateTime
的副本,OffsetDateTime
包含日期更改。OffsetDateTime
withHour(int hour)
返回此OffsetDateTime
的副本,并更改日期。OffsetDateTime
withMinute(int minute)
返回此OffsetDateTime
的副本,并更改了分钟。OffsetDateTime
withMonth(int month)
返回此OffsetDateTime
的副本,其中年份已更改。OffsetDateTime
withNano(int nanoOfSecond)
返回此OffsetDateTime
的副本,并更改了纳秒。OffsetDateTime
withOffsetSameInstant(ZoneOffset offset)
返回具有指定偏移量的此OffsetDateTime
的副本,确保结果处于同一时刻。OffsetDateTime
withOffsetSameLocal(ZoneOffset offset)
返回具有指定偏移量的此OffsetDateTime
的副本,确保结果具有相同的本地日期时间。OffsetDateTime
withSecond(int second)
返回此OffsetDateTime
的副本,其中第二分钟已更改。OffsetDateTime
withYear(int year)
返回此OffsetDateTime
的副本,并更改年份。
-
-
-
字段详细信息
-
MIN
public static final OffsetDateTime MIN
支持的最小值为OffsetDateTime
,' -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
- 要使用的时钟,不为空 - 结果
- 当前日期时间,不为空
-
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月(1月)到12月(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
- 创建日期时间的瞬间,而不是null -
zone
- 时区,可以是偏移量,不为空 - 结果
- 偏移日期时间,不为空
- 异常
-
DateTimeException
- 如果结果超出支持的范围
-
from
public static OffsetDateTime from(TemporalAccessor temporal)
从时态对象获得OffsetDateTime
的实例。这基于指定的时间获得偏移日期时间。
TemporalAccessor
表示一组任意日期和时间信息,该工厂将其转换为OffsetDateTime
的实例。转换将首先从时间对象获得
ZoneOffset
。 然后它会尝试获得LocalDateTime
,必要时可以回到Instant
。 结果将是ZoneOffset
与LocalDateTime
或Instant
。 允许实现执行优化,例如访问与相关对象等效的那些字段。此方法匹配功能接口
TemporalQuery
的签名,允许通过方法引用OffsetDateTime::from
将其用作查询。- 参数
-
temporal
- 要转换的时态对象,而不是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
的实例。使用格式化程序解析文本,返回日期时间。
- 参数
-
text
- 要解析的文本,而不是null -
formatter
- 要使用的格式化程序,而不是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
in interfaceTemporalAccessor
- 参数
-
字段
- 要检查的字段,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 - 结果
- 如果可以添加/减去单位,则为true,否则为false
-
-
range
public ValueRange range(TemporalField field)
获取指定字段的有效值范围。范围对象表示字段的最小和最大有效值。 此日期时间用于提高返回范围的准确性。 如果无法返回范围,因为不支持该字段或由于某些其他原因,将引发异常。
如果该字段是
ChronoField
,则在此处实现查询。supported fields
将返回适当的范围实例。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段不是
ChronoField
,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 是否可以获得范围由该字段确定。- Specified by:
-
range
在界面TemporalAccessor
- 参数
-
字段
- 要查询范围的字段,而不是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
- 参数
-
字段
- 要获取的字段,而不是null - 结果
- 该字段的值
- 异常
-
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
- 参数
-
字段
- 要获取的字段,而不是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
,请求的偏移量,不为空
-
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
,其年,月,日为该日期时间。- 结果
- 此日期时间的日期部分,不为空
-
getYear
public int getYear()
获取年份字段。此方法返回年份的原始值
int
。根据
get(YEAR)
,此方法返回的年份是get(YEAR)
。 要获得年代,请使用get(YEAR_OF_ERA)
。- 结果
- 年份,从MIN_YEAR到MAX_YEAR
-
getMonthValue
public int getMonthValue()
获取1到12之间的月份字段。此方法将月份作为
int
从1返回到12.如果通过调用getMonth()
使用枚举Month
,则应用程序代码通常更清晰。- 结果
- 月份,从1到12
- 另请参见:
-
getMonth()
-
getMonth
public Month getMonth()
- 结果
- 一年中的月份,不是空的
- 另请参见:
-
getMonthValue()
-
getDayOfMonth
public int getDayOfMonth()
获取日期字段。此方法返回日期的原始值
int
。- 结果
- 每月,从1到31
-
getDayOfYear
public int getDayOfYear()
获取日期字段。此方法返回日期的原始值
int
。- 结果
- 一年中,从1到365,或闰年366
-
getDayOfWeek
public DayOfWeek getDayOfWeek()
获取星期几字段,这是一个枚举DayOfWeek
。此方法返回星期几的枚举
DayOfWeek
。 这避免了int
值的含义混淆。 如果您需要访问原始值int
则枚举提供int value
。其他信息可以从
DayOfWeek
获得。 这包括值的文本名称。- 结果
- 星期几,不是空的
-
toLocalTime
public LocalTime toLocalTime()
获取此日期时间的LocalTime
部分。这将返回
LocalTime
,其时间,分钟,秒和纳秒与此日期时间相同。- 结果
- 此日期时间的时间部分,不为空
-
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
- 要使用的调整器,不为null - 结果
- 一个
OffsetDateTime
基于this
与制造,不为空调整 - 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
with
public OffsetDateTime with(TemporalField field, long newValue)
返回此日期时间的副本,并将指定字段设置为新值。这将返回
OffsetDateTime
(基于此值),并更改指定字段的值。 这可用于更改任何支持的字段,例如年,月或日。 如果无法设置该值,因为不支持该字段或由于某些其他原因,将引发异常。在某些情况下,更改指定字段可能导致生成的日期时间变为无效,例如将月份从1月31日更改为2月将使日期无效。 在这种情况下,该字段负责解决日期。 通常,它会选择上一个有效日期,这个日期是本例中2月的最后一个有效日期。
如果该字段是
ChronoField
,则在此处执行调整。INSTANT_SECONDS
字段将返回指定时刻的日期时间。 偏移和纳秒不变。 如果新的瞬时值超出有效范围,则将抛出DateTimeException
。OFFSET_SECONDS
字段将返回具有指定偏移量的日期时间。 本地日期时间不变。 如果新的偏移值超出有效范围,则抛出DateTimeException
。其他
supported fields
将按照LocalDateTime
上的匹配方法运行 。 在这种情况下,偏移量不是计算的一部分,并且不会改变。所有其他
ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.adjustInto(Temporal, long)
传递this
作为参数。 在这种情况下,该字段确定是否以及如何调整瞬间。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
with
在界面Temporal
- 参数
-
字段
- 要在结果中设置的字段,不为null -
newValue
- 结果中字段的新值 - 结果
-
OffsetDateTime
基于this
并指定了字段集,不为空 - 异常
-
DateTimeException
- 如果无法设置该字段 -
UnsupportedTemporalTypeException
- 如果不支持该字段 -
ArithmeticException
- 如果发生数字溢出
-
withYear
public OffsetDateTime withYear(int year)
返回此OffsetDateTime
的副本,并更改年份。时间和偏移量不会影响计算,结果也相同。 如果该年的某一天无效,则会将其更改为该月的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
year
- 结果中设置的年份,从MIN_YEAR到MAX_YEAR - 结果
- 基于此请求年份的日期时间的
OffsetDateTime
,不为空 - 异常
-
DateTimeException
- 如果年份值无效
-
withMonth
public OffsetDateTime withMonth(int month)
返回此OffsetDateTime
的副本,其中年份已更改。时间和偏移量不会影响计算,结果也相同。 如果该年的某一天无效,则会将其更改为该月的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
month
- 结果中设置的月份,从1(1月)到12(12月) - 结果
- 基于此日期时间的
OffsetDateTime
与请求的月份,不为空 - 异常
-
DateTimeException
- 如果月份值无效
-
withDayOfMonth
public OffsetDateTime withDayOfMonth(int dayOfMonth)
返回此OffsetDateTime
的副本,并更改日期。如果生成的
OffsetDateTime
无效,则抛出异常。 时间和偏移量不会影响计算,结果也相同。此实例是不可变的,不受此方法调用的影响。
- 参数
-
dayOfMonth
- 在结果中设置的日期,从1到28-31 - 结果
- 基于此日期时间和请求日期的
OffsetDateTime
,不为空 - 异常
-
DateTimeException
- 如果日期值无效,或者月份的月份无效
-
withDayOfYear
public OffsetDateTime withDayOfYear(int dayOfYear)
返回此OffsetDateTime
的副本,并更改日期。时间和偏移量不会影响计算,结果也相同。 如果生成的
OffsetDateTime
无效,则抛出异常。此实例是不可变的,不受此方法调用的影响。
- 参数
-
dayOfYear
- 结果中设置的日期,从1到365-366 - 结果
- 基于此日期和请求日期的
OffsetDateTime
,不为空 - 异常
-
DateTimeException
- 如果日期值无效,或者年度日期无效
-
withHour
public OffsetDateTime withHour(int hour)
返回此OffsetDateTime
的副本,并更改日期。日期和偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
hour
- 在结果中设置的小时,从0到23 - 结果
- 基于此日期时间的
OffsetDateTime
,请求小时,不为空 - 异常
-
DateTimeException
- 如果小时值无效
-
withMinute
public OffsetDateTime withMinute(int minute)
返回此OffsetDateTime
的副本,并更改了分钟。日期和偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
minute
- 在结果中设置的分钟数,从0到59 - 结果
- 基于此日期时间的
OffsetDateTime
,请求分钟,不为空 - 异常
-
DateTimeException
- 如果分钟值无效
-
withSecond
public OffsetDateTime withSecond(int second)
返回此OffsetDateTime
的副本,并在第二分钟更改。日期和偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
second
- 在结果中设置的second
,从0到59 - 结果
- 基于此日期时间的
OffsetDateTime
,请求秒,不为空 - 异常
-
DateTimeException
- 如果第二个值无效
-
withNano
public OffsetDateTime withNano(int nanoOfSecond)
返回此OffsetDateTime
的副本,其中纳秒级已更改。日期和偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
nanoOfSecond
- 在结果中设置的纳秒数,从0到999,999,999 - 结果
- 基于此日期时间的
OffsetDateTime
,请求纳秒,不为空 - 异常
-
DateTimeException
- 如果纳米值无效
-
truncatedTo
public OffsetDateTime truncatedTo(TemporalUnit unit)
返回此OffsetDateTime
的副本,并截断时间。截断返回原始日期时间的副本,其中小于指定单位的字段设置为零。 例如,使用
minutes
单位截断将第二分钟和纳秒级字段设置为零。该单位必须有一个duration ,它分为标准日的长度,没有余数。 这包括
ChronoUnit
和DAYS
上提供的所有时间单位。 其他单位抛出异常。偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
unit
- 要截断的单位,而不是null - 结果
- 基于此日期时间的
OffsetDateTime
,截断时间,不为空 - 异常
-
DateTimeException
- 如果无法截断 -
UnsupportedTemporalTypeException
- 如果不支持该设备
-
plus
public OffsetDateTime plus(TemporalAmount amountToAdd)
返回此日期时间的副本,并添加指定的数量。这将返回基于此值的
OffsetDateTime
,并添加指定的金额。 金额通常为Period
或Duration
,但可能是实现TemporalAmount
界面的任何其他类型。通过调用
TemporalAmount.addTo(Temporal)
将计算委托给amount对象。 实施金额可以任意方式自由实施,但通常会回拨plus(long, TemporalUnit)
。 请参阅金额实施的文档,以确定是否可以成功添加。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
plus
在界面Temporal
- 参数
-
amountToAdd
- 要添加的金额,不为空 - 结果
- 基于此日期时间的
OffsetDateTime
,添加,不为空 - 异常
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数字溢出
-
plus
public OffsetDateTime plus(long amountToAdd, TemporalUnit unit)
返回此日期时间的副本,并添加指定的数量。这将返回一个基于此的
OffsetDateTime
,其中包含已添加单位的金额。 如果无法添加金额,因为不支持该单位或由于某些其他原因,则会引发异常。如果该字段是
ChronoUnit
,则添加由LocalDateTime.plus(long, TemporalUnit)
实现。 偏移量不是计算的一部分,结果将保持不变。如果该字段不是
ChronoUnit
,则通过调用this
作为参数调用TemporalUnit.addTo(Temporal, long)
获得此方法的结果。 在这种情况下,该单元确定是否以及如何执行添加。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
plus
in interfaceTemporal
- 参数
-
amountToAdd
- 要添加到结果中的单位数量可能为负数 -
unit
- 要添加的金额的单位,而不是空 - 结果
- 基于此日期时间的
OffsetDateTime
,添加了指定的金额,而不是null - 异常
-
DateTimeException
- 如果无法添加 -
UnsupportedTemporalTypeException
- 如果不支持该装置 -
ArithmeticException
- 如果发生数字溢出
-
plusYears
public OffsetDateTime plusYears(long years)
返回此OffsetDateTime
的副本,并添加指定的年数。此方法分三个步骤将指定的金额添加到年份字段:
- 将输入年份添加到年份字段
- 检查结果日期是否无效
- 如有必要,将日期调整为最后一个有效日期
例如,2008-02-29(闰年)加上一年将导致无效日期2009-02-29(标准年份)。 而不是返回无效结果,而是选择该月的最后一个有效日期2009-02-28。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
years
- 添加的年份,可能是负面的 - 结果
- 基于此日期时间的
OffsetDateTime
,添加年份,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
plusMonths
public OffsetDateTime plusMonths(long months)
返回此OffsetDateTime
的副本,并添加指定的月份数。此方法分三个步骤将指定的数量添加到months字段:
- 将输入月份添加到年度字段中
- 检查结果日期是否无效
- 如有必要,将日期调整为最后一个有效日期
例如,2007-03-31加上一个月将导致2007-04-31无效日期。 而不是返回无效结果,而是选择该月的最后一个有效日期,即2007-04-30。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
months
- 要添加的月份,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,添加月份,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
plusWeeks
public OffsetDateTime plusWeeks(long weeks)
返回此OffsetDateTime的副本,并添加指定的周数。此方法将指定的周数添加到days字段中,根据需要递增月份和年份字段,以确保结果保持有效。 结果仅在超过最大/最小年份时无效。
例如,2008-12-31加上一周将导致2009-01-07。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
weeks
- 要添加的周数,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,添加周数,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
plusDays
public OffsetDateTime plusDays(long days)
返回此OffsetDateTime的副本,并添加指定的天数。此方法将指定的金额添加到days字段,根据需要递增月份和年份字段,以确保结果保持有效。 结果仅在超过最大/最小年份时无效。
例如,2008-12-31加上一天将导致2009-01-01。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
days
- 添加的日期,可能是负面的 - 结果
- 基于此日期时间的
OffsetDateTime
,添加日期,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
plusHours
public OffsetDateTime plusHours(long hours)
返回此OffsetDateTime
的副本,并添加指定的小时数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
hours
- 要添加的小时数,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,添加小时数,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
plusMinutes
public OffsetDateTime plusMinutes(long minutes)
返回此OffsetDateTime
的副本,并添加指定的分钟数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
minutes
- 要添加的分钟数,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,添加分钟,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
plusSeconds
public OffsetDateTime plusSeconds(long seconds)
返回此OffsetDateTime
的副本,并添加指定的秒数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
seconds
- 要添加的秒数,可能为负数 - 结果
- 基于此日期时间的
OffsetDateTime
,添加秒数,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
plusNanos
public OffsetDateTime plusNanos(long nanos)
返回此OffsetDateTime
的副本,OffsetDateTime
添加了指定的纳秒数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
nanos
- 要添加的nanos
,可能是负面的 - 结果
- 基于此日期时间的
OffsetDateTime
,加上纳秒,不为空 - 异常
-
DateTimeException
- 如果无法将单位添加到此类型
-
minus
public OffsetDateTime minus(TemporalAmount amountToSubtract)
返回此日期时间的副本,并减去指定的数量。这将返回一个
OffsetDateTime
,基于此值,减去指定的数量。 金额通常为Period
或Duration
,但可以是实现TemporalAmount
接口的任何其他类型。通过调用
TemporalAmount.subtractFrom(Temporal)
将计算委托给amount对象。 量实现可以以任何方式自由地实现减法,但是它通常会回调到minus(long, TemporalUnit)
。 请参阅金额实施的文档,以确定是否可以成功减去它。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
minus
在界面Temporal
- 参数
-
amountToSubtract
- 要减去的金额,而不是空 - 结果
- 基于此日期时间的
OffsetDateTime
进行减法,而不是空 - 异常
-
DateTimeException
- 如果无法进行减法 -
ArithmeticException
- 如果发生数字溢出
-
minus
public OffsetDateTime minus(long amountToSubtract, TemporalUnit unit)
返回此日期时间的副本,并减去指定的数量。这将返回一个
OffsetDateTime
,基于此,减去单位的数量。 如果无法减去金额,因为不支持该单位或由于某些其他原因,则抛出异常。该方法相当于
plus(long, TemporalUnit)
,其数量为负数 。 有关添加和减法如何工作的完整描述,请参阅该方法。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
minus
在界面Temporal
- 参数
-
amountToSubtract
- 从结果中减去的单位数量可能为负数 -
unit
- 要减去的金额的单位,而不是空 - 结果
- 基于此日期时间的
OffsetDateTime
,减去指定的金额,而不是空 - 异常
-
DateTimeException
- 如果无法进行减法 -
UnsupportedTemporalTypeException
- 如果不支持该装置 -
ArithmeticException
- 如果发生数字溢出
-
minusYears
public OffsetDateTime minusYears(long years)
返回此OffsetDateTime
的副本,并减去指定的年数。此方法分三个步骤从年份字段中减去指定的金额:
- 从年份字段中减去输入年份
- 检查结果日期是否无效
- 如有必要,将日期调整为最后一个有效日期
例如,2008-02-29(闰年)减去一年将导致无效日期2007-02-29(标准年份)。 而不是返回无效结果,而是选择该月的最后一个有效日期,即2007-02-28。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
years
- 减去的年份,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,减去年份,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
minusMonths
public OffsetDateTime minusMonths(long months)
返回此OffsetDateTime
的副本,并减去指定的月数。此方法分三个步骤从months字段中减去指定的金额:
- 从月份字段中减去输入月份
- 检查结果日期是否无效
- 如有必要,将日期调整为最后一个有效日期
例如,2007-03-31减去一个月将导致无效日期2007-02-31。 而不是返回无效结果,而是选择该月的最后一个有效日期,即2007-02-28。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
months
- 减去的月份,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,减去的月份,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
minusWeeks
public OffsetDateTime minusWeeks(long weeks)
返回此OffsetDateTime
的副本,并减去指定的周数。此方法在几天内从减去月份和年份字段的天数字段中减去指定的金额,以确保结果保持有效。 结果仅在超过最大/最小年份时无效。
例如,2009-01-07减去一周将导致2008-12-31。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
weeks
- 减去的周数,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
减去周数,而不是空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
minusDays
public OffsetDateTime minusDays(long days)
返回此OffsetDateTime
的副本,并减去指定的天数。此方法从日期字段中减去指定的金额,根据需要减少月份和年份字段,以确保结果保持有效。 结果仅在超过最大/最小年份时无效。
例如,2009-01-01减去一天将导致2008-12-31。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
days
- 减去的日子,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,减去天数,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
minusHours
public OffsetDateTime minusHours(long hours)
返回此OffsetDateTime
的副本,并减去指定的小时数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
hours
- 减去的小时数,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,减去小时数,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
minusMinutes
public OffsetDateTime minusMinutes(long minutes)
返回此OffsetDateTime
的副本,并减去指定的分钟数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
minutes
- 要减去的分钟数,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,减去分钟数,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
minusSeconds
public OffsetDateTime minusSeconds(long seconds)
返回此OffsetDateTime
的副本,并减去指定的秒数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
seconds
- 要减去的秒数,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,减去秒数,不为空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
minusNanos
public OffsetDateTime minusNanos(long nanos)
返回此OffsetDateTime
的副本,减去指定的纳秒数。此实例是不可变的,不受此方法调用的影响。
- 参数
-
nanos
- 减去nanos
,可能是负数 - 结果
- 基于此日期时间的
OffsetDateTime
,减去纳秒,而不是空 - 异常
-
DateTimeException
- 如果结果超出支持的日期范围
-
query
public <R> R query(TemporalQuery<R> query)
使用指定的查询查询此日期时间。这将使用指定的查询策略对象查询此日期时间。
TemporalQuery
对象定义用于获取结果的逻辑。 阅读查询文档以了解此方法的结果。通过在指定的查询上调用
TemporalQuery.queryFrom(TemporalAccessor)
方法作为参数传递this
来获得此方法的结果。- Specified by:
-
query
,界面TemporalAccessor
- 参数类型
-
R
- 结果的类型 - 参数
-
query
- 要调用的查询,而不是null - 结果
- 查询结果,可以返回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 - 结果
- 调整后的对象,不为空
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
until
public long until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算到另一个日期时间的时间量。这将根据单个
TemporalUnit
计算两个OffsetDateTime
对象之间的时间量。 起点和终点是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
- 要使用的格式化程序,不为null - 结果
- 格式化的日期时间字符串,不为空
- 异常
-
DateTimeException
- 如果在打印期间发生错误
-
atZoneSameInstant
public ZonedDateTime atZoneSameInstant(ZoneId zone)
将此日期时间与时区组合以创建ZonedDateTime
,以确保结果具有相同的瞬间。这将返回由此日期时间和指定时区组成的
ZonedDateTime
。 此转换将忽略可见的本地日期时间,而是使用基础时刻。 这避免了局部时间线间隙或重叠的任何问题。 结果可能具有不同的值,例如小时,分钟和偶数天。要尝试保留字段的值,请使用
atZoneSimilarLocal(ZoneId)
。 要将偏移量用作区域ID,请使用toZonedDateTime()
。- 参数
-
zone
- 要使用的时区,不是null - 结果
- 从此日期时间形成的分区日期时间,而不是null
-
atZoneSimilarLocal
public ZonedDateTime atZoneSimilarLocal(ZoneId zone)
将此日期时间与时区组合以创建ZonedDateTime
尝试保持相同的本地日期和时间。这将返回由此日期时间和指定时区组成的
ZonedDateTime
。 在可能的情况下,结果将具有与此对象相同的本地日期时间。时区规则(例如夏令时)意味着并非每次都在本地时间线上存在。 如果本地日期时间根据规则处于间隙或重叠,则使用解析器来确定结果本地时间和偏移。 如果可能,此方法使用
ZonedDateTime.ofLocal(LocalDateTime, ZoneId, ZoneOffset)
来保留此实例的偏移量。可以通过两种方式更好地控制间隙和重叠。 如果您只想在重叠时使用后面的偏移量,请在此方法后立即调用
ZonedDateTime.withLaterOffsetAtOverlap()
。要在同一时刻创建分区日期时间而不考虑本地时间线,请使用
atZoneSameInstant(ZoneId)
。 要将偏移量用作区域ID,请使用toZonedDateTime()
。- 参数
-
zone
- 要使用的时区,不是null - 结果
- 从此日期开始的分区日期时间和区域的最早有效时间,不为空
-
toOffsetTime
public OffsetTime toOffsetTime()
将此日期时间转换为OffsetTime
。这将返回具有相同本地时间和偏移量的偏移时间。
- 结果
- 表示时间和偏移量的OffsetTime,不为null
-
toZonedDateTime
public ZonedDateTime toZonedDateTime()
使用偏移量作为区域ID将此日期时间转换为ZonedDateTime
。这使用偏移作为区域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
- 要比较的其他日期时间,而不是null - 结果
- 如果这是在指定日期时间之后,则为true
-
isBefore
public boolean isBefore(OffsetDateTime other)
检查此日期时间的瞬间是否在指定日期时间之前。该方法与
compareTo(java.time.OffsetDateTime)
中的比较的不同之处在于它仅比较日期时间的瞬间。 这相当于使用dateTime1.toInstant().isBefore(dateTime2.toInstant());
。- 参数
-
other
- 要比较的其他日期时间,而不是null - 结果
- 如果它在指定日期时间之前,则为true
-
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
对象,其他类型返回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
-
-
-