- java.lang.Object
-
- java.time.OffsetTime
-
- 实现的所有接口
-
Serializable
,Comparable<OffsetTime>
,Temporal
,TemporalAccessor
,TemporalAdjuster
public final class OffsetTimeextends Objectimplements Temporal, TemporalAdjuster, Comparable<OffsetTime>, Serializable
在ISO-10:15:30+01:00
UTC / Greenwich偏移的时间,例如10:15:30+01:00
。OffsetTime
是一个不可变的日期时间对象,表示一个时间,通常被视为小时 - 秒 - 秒偏移量。 此类存储所有时间字段,精度为纳秒,以及区域偏移。 例如,值“13:45:30.123456789 + 02:00”可以存储在OffsetTime
。这是一个value-based班; 在
OffsetTime
实例上使用身份敏感操作(包括引用相等(==
),标识哈希码或同步)可能会产生不可预测的结果,应该避免使用。equals
方法应该用于比较。- 实现要求:
- 这个类是不可变的和线程安全的。
- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 static OffsetTime
MAX
支持的最大值为OffsetTime
,'23:59:59.999999999-18:00'。static OffsetTime
MIN
支持的最低限度为OffsetTime
,'00:00:00 + 18:00'。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 Temporal
adjustInto(Temporal temporal)
调整指定的时态对象,使其具有与此对象相同的偏移量和时间。OffsetDateTime
atDate(LocalDate date)
将此时间与日期相结合以创建OffsetDateTime
。int
compareTo(OffsetTime other)
比较这个OffsetTime
到另一个时间。boolean
equals(Object obj)
检查此时间是否等于另一个时间。String
format(DateTimeFormatter formatter)
这次使用指定的格式化程序格式化。static OffsetTime
from(TemporalAccessor temporal)
从时态对象获得OffsetTime
的实例。int
get(TemporalField field)
从int
获取此时指定字段的值。int
getHour()
获取当日时间字段。long
getLong(TemporalField field)
从此时间获取指定字段的值为long
。int
getMinute()
获取分钟字段。int
getNano()
获取纳秒级字段。ZoneOffset
getOffset()
获取区域偏移量,例如“+01:00”。int
getSecond()
获取第二分钟字段。int
hashCode()
这次的哈希码。boolean
isAfter(OffsetTime other)
检查此OffsetTime
的瞬间是否在指定时间之后,将两次应用于共同日期。boolean
isBefore(OffsetTime other)
检查此OffsetTime
的瞬间是否在指定时间之前,同时将两次应用于共同日期。boolean
isEqual(OffsetTime other)
检查此OffsetTime
的瞬间是否等于指定时间的瞬间,同时应用于共同日期。boolean
isSupported(TemporalField field)
检查是否支持指定的字段。boolean
isSupported(TemporalUnit unit)
检查指定的单元是否受支持。OffsetTime
minus(long amountToSubtract, TemporalUnit unit)
返回此时间的副本,并减去指定的数量。OffsetTime
minus(TemporalAmount amountToSubtract)
返回此时间的副本,并减去指定的数量。OffsetTime
minusHours(long hours)
返回此OffsetTime
的副本,并减去指定的小时数。OffsetTime
minusMinutes(long minutes)
返回此OffsetTime
的副本,并减去指定的分钟数。OffsetTime
minusNanos(long nanos)
返回此OffsetTime
的副本,减去指定的纳秒数。OffsetTime
minusSeconds(long seconds)
返回此OffsetTime
的副本,并减去指定的秒数。static OffsetTime
now()
在默认时区中从系统时钟获取当前时间。static OffsetTime
now(Clock clock)
从指定的时钟获得当前时间。static OffsetTime
now(ZoneId zone)
从指定时区的系统时钟获取当前时间。static OffsetTime
of(int hour, int minute, int second, int nanoOfSecond, ZoneOffset offset)
从小时,分钟,秒和纳秒获得OffsetTime
的实例。static OffsetTime
of(LocalTime time, ZoneOffset offset)
从本地时间和偏移量获得OffsetTime
的实例。static OffsetTime
ofInstant(Instant instant, ZoneId zone)
从Instant
和区域ID获得OffsetTime
的实例。static OffsetTime
parse(CharSequence text)
从文本字符串(如10:15:30+01:00
获取OffsetTime
的实例。static OffsetTime
parse(CharSequence text, DateTimeFormatter formatter)
使用特定格式化程序从文本字符串中获取OffsetTime
的实例。OffsetTime
plus(long amountToAdd, TemporalUnit unit)
返回此时间的副本,并添加指定的数量。OffsetTime
plus(TemporalAmount amountToAdd)
返回此时间的副本,并添加指定的数量。OffsetTime
plusHours(long hours)
返回此OffsetTime
的副本,并添加指定的小时数。OffsetTime
plusMinutes(long minutes)
返回此OffsetTime
的副本,并添加指定的分钟数。OffsetTime
plusNanos(long nanos)
返回此OffsetTime
的副本,OffsetTime
添加了指定的纳秒数。OffsetTime
plusSeconds(long seconds)
返回此OffsetTime
的副本,并添加指定的秒数。<R> R
query(TemporalQuery<R> query)
这次使用指定的查询进行查询。ValueRange
range(TemporalField field)
获取指定字段的有效值范围。long
toEpochSecond(LocalDate date)
将此OffsetTime
转换为自1970-01-01T00:00:00Z时代以来的秒数。LocalTime
toLocalTime()
获取此日期时间的LocalTime
部分。String
toString()
此时输出为String
,例如10:15:30+01:00
。OffsetTime
truncatedTo(TemporalUnit unit)
返回此OffsetTime
的副本,并截断时间。long
until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算到另一个时间的时间量。OffsetTime
with(TemporalAdjuster adjuster)
返回此时的调整副本。OffsetTime
with(TemporalField field, long newValue)
返回此时间的副本,并将指定字段设置为新值。OffsetTime
withHour(int hour)
返回此OffsetTime
的副本,并更改日期。OffsetTime
withMinute(int minute)
返回此OffsetTime
的副本,并更改了分钟。OffsetTime
withNano(int nanoOfSecond)
返回此OffsetTime
的副本,其中纳秒数已更改。OffsetTime
withOffsetSameInstant(ZoneOffset offset)
返回具有指定偏移量的此OffsetTime
的副本,确保结果在隐含日期的同一时刻。OffsetTime
withOffsetSameLocal(ZoneOffset offset)
返回具有指定偏移量的此OffsetTime
的副本,确保结果具有相同的本地时间。OffsetTime
withSecond(int second)
返回此OffsetTime
的副本,并在第二分钟更改。
-
-
-
字段详细信息
-
MIN
public static final OffsetTime MIN
最低支持OffsetTime
,'00:00:00 + 18:00'。 这是在最大偏移量的一天开始的午夜时间(较大的偏移在时间线上较早)。 它结合了LocalTime.MIN
和ZoneOffset.MAX
。 这可以被应用程序用作“远期”日期。
-
MAX
public static final OffsetTime MAX
支持的最大值为OffsetTime
,'23:59:59.999999999-18:00'。 这是在一天结束时午夜之前的最小偏移量的时间(较大的负偏移量稍后在时间线上)。 它结合了LocalTime.MAX
和ZoneOffset.MIN
。 这可以被应用程序用作“远期未来”日期。
-
-
方法详细信息
-
now
public static OffsetTime now()
- 结果
- 使用系统时钟和默认时区的当前时间,不为空
-
now
public static OffsetTime now(ZoneId zone)
从指定时区的系统时钟获取当前时间。这将查询
system clock
以获取当前时间。 指定时区可避免依赖于默认时区。 偏移量将从指定的时区计算。使用此方法将无法使用备用时钟进行测试,因为时钟是硬编码的。
- 参数
-
zone
- 要使用的区域ID,不为空 - 结果
- 使用系统时钟的当前时间,不为空
-
now
public static OffsetTime now(Clock clock)
- 参数
-
clock
- 要使用的时钟,不为空 - 结果
- 当前时间,不是空
-
of
public static OffsetTime of(LocalTime time, ZoneOffset offset)
从本地时间和偏移量获得OffsetTime
的实例。- 参数
-
time
- 当地时间,非空 -
offset
- 区域偏移量,不为空 - 结果
- 偏移时间,不为空
-
of
public static OffsetTime of(int hour, int minute, int second, int nanoOfSecond, ZoneOffset offset)
从小时,分钟,秒和纳秒获得OffsetTime
的实例。这将使用四个指定的字段创建偏移时间。
此方法主要用于编写测试用例。 非测试代码通常使用其他方法来创建偏移时间。
LocalTime
具有两个额外的方便变体,等效工厂方法占用较少的参数。 这里没有提供它们来减少API的占用空间。- 参数
-
hour
- 表示从0到23的小时 -
minute
- 表示从0到59的小时 -
second
- 表示从0到59的秒的分钟 -
nanoOfSecond
- 代表的纳秒数,从0到999,999,999 -
offset
- 区域偏移量,不为空 - 结果
- 偏移时间,不为空
- 异常
-
DateTimeException
- 如果任何字段的值超出范围
-
ofInstant
public static OffsetTime ofInstant(Instant instant, ZoneId zone)
从Instant
和区域ID获得OffsetTime
的实例。这将创建一个与指定时间相同的偏移时间。 从UTC / Greenwich查找偏移量很简单,因为每个瞬间只有一个有效偏移量。
转换期间会删除该瞬间的日期组件。 这意味着由于瞬间超出有效的日期范围,转换永远不会失败。
- 参数
-
instant
- 创建时间的瞬间,而不是null -
zone
- 时区,可以是偏移量,不为空 - 结果
- 偏移时间,不为空
-
from
public static OffsetTime from(TemporalAccessor temporal)
从时态对象获得OffsetTime
的实例。这基于指定的时间获得偏移时间。
TemporalAccessor
表示一组任意日期和时间信息,该工厂将其转换为OffsetTime
的实例。转换从时态对象中提取并组合
ZoneOffset
和LocalTime
。 允许实现执行优化,例如访问与相关对象等效的那些字段。此方法匹配功能接口
TemporalQuery
的签名,允许通过方法引用OffsetTime::from
将其用作查询。- 参数
-
temporal
- 要转换的时态对象,而不是null - 结果
- 偏移时间,不为空
- 异常
-
DateTimeException
- 如果无法转换为OffsetTime
-
parse
public static OffsetTime parse(CharSequence text)
从文本字符串(如10:15:30+01:00
获取OffsetTime
的实例。该字符串必须表示有效时间,并使用
DateTimeFormatter.ISO_OFFSET_TIME
进行解析。- 参数
-
text
- 要解析的文本,例如“text
+ 01:00”,不为空 - 结果
- 解析的本地时间,不为空
- 异常
-
DateTimeParseException
- 如果无法解析文本
-
parse
public static OffsetTime parse(CharSequence text, DateTimeFormatter formatter)
使用特定格式化程序从文本字符串中获取OffsetTime
的实例。使用格式化程序解析文本,返回时间。
- 参数
-
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
-
OFFSET_SECONDS
ChronoField
实例将返回false。如果该字段不是
ChronoField
,则通过调用TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数来获得此方法的结果。 字段是否受支持由字段确定。- Specified by:
-
isSupported
在界面TemporalAccessor
- 参数
-
字段
- 要检查的字段,null返回false - 结果
- 如果此时支持该字段,则为true,否则为false
-
-
isSupported
public boolean isSupported(TemporalUnit unit)
检查指定的单元是否受支持。这将检查指定的单位是否可以添加到此偏移时间或从中减去。 如果为false,则调用
plus(long, TemporalUnit)
和minus
方法将引发异常。如果单位是
ChronoUnit
,则在此处执行查询。 支持的单位是:-
NANOS
-
MICROS
-
MILLIS
-
SECONDS
-
MINUTES
-
HOURS
-
HALF_DAYS
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
除外,它们太大而无法放入int
并抛出UnsupportedTemporalTypeException
。 所有其他ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 是否可以获得该值以及该值表示的值由该字段确定。- Specified by:
-
get
in interfaceTemporalAccessor
- 参数
-
字段
- 要获取的字段,而不是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 OffsetTime withOffsetSameLocal(ZoneOffset offset)
返回具有指定偏移量的此OffsetTime
的副本,确保结果具有相同的本地时间。此方法返回具有相同
LocalTime
和指定的ZoneOffset
。 无需计算或执行。 例如,如果此时间表示10:30+02:00
且指定的偏移量为+03:00
,则此方法将返回10:30+03:00
。要考虑偏移之间的差异,并调整时间字段,请使用
withOffsetSameInstant(java.time.ZoneOffset)
。此实例是不可变的,不受此方法调用的影响。
- 参数
-
offset
- 要更改为的区域偏移量,不为空 - 结果
- 基于此时间的
OffsetTime
,请求的偏移量,不为空
-
withOffsetSameInstant
public OffsetTime withOffsetSameInstant(ZoneOffset offset)
返回具有指定偏移量的此OffsetTime
的副本,确保结果在隐含日期的同一时刻。此方法返回具有指定的
ZoneOffset
和LocalTime
的对象,并通过两个偏移之间的差异进行调整。 这将导致旧的和新的对象在隐含的一天表示相同的瞬间。 这对于在不同偏移中查找本地时间很有用。 例如,如果此时间表示10:30+02:00
且指定的偏移量为+03:00
,则此方法将返回11:30+03:00
。要在不调整当地时间的情况下更改偏移量,请使用
withOffsetSameLocal(java.time.ZoneOffset)
。此实例是不可变的,不受此方法调用的影响。
- 参数
-
offset
- 要更改为的区域偏移量,不为空 - 结果
- 基于此时间的
OffsetTime
,请求的偏移量,不为空
-
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 OffsetTime with(TemporalAdjuster adjuster)
返回此时的调整副本。这将返回一个
OffsetTime
,基于此,调整时间。 使用指定的调整器策略对象进行调整。 阅读调整器的文档,了解将进行哪些调整。简单的调整器可能只是设置其中一个字段,例如小时字段。 更复杂的调节器可能会将时间设置为当天的最后一小时。
类
LocalTime
和ZoneOffset
实现TemporalAdjuster
,因此此方法可用于更改时间或偏移量:result = offsetTime.with(time); result = offsetTime.with(offset);
此方法的结果是通过调用获得
TemporalAdjuster.adjustInto(Temporal)
在经过指定的调节方法this
作为参数。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
with
在界面Temporal
- 参数
-
adjuster
- 要使用的调整器,不为null - 结果
- 一个
OffsetTime
基于this
与制造,不为空调整 - 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
with
public OffsetTime with(TemporalField field, long newValue)
返回此时间的副本,并将指定字段设置为新值。这将返回
OffsetTime
(基于此值),并更改指定字段的值。 这可用于更改任何支持的字段,例如小时,分钟或秒。 如果无法设置该值,因为不支持该字段或由于某些其他原因,将引发异常。如果该字段是
ChronoField
,则在此处执行调整。OFFSET_SECONDS
字段将返回具有指定偏移量的时间。 当地时间不变。 如果新的偏移值超出有效范围,则将抛出DateTimeException
。另一个
supported fields
将按照LocalTime.with(TemporalField, long)
LocalTime }上的匹配方法运行 。 在这种情况下,偏移量不是计算的一部分,并且不会改变。所有其他
ChronoField
实例将抛出UnsupportedTemporalTypeException
。如果该字段是不是一个
ChronoField
,则此方法的结果是通过调用获得TemporalField.adjustInto(Temporal, long)
传递this
作为参数。 在这种情况下,该字段确定是否以及如何调整瞬间。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
with
在界面Temporal
- 参数
-
字段
- 要在结果中设置的字段,不为空 -
newValue
- 结果中字段的新值 - 结果
- 一个
OffsetTime
基于this
使用指定的字段设置,不为空 - 异常
-
DateTimeException
- 如果无法设置该字段 -
UnsupportedTemporalTypeException
- 如果不支持该字段 -
ArithmeticException
- 如果发生数字溢出
-
withHour
public OffsetTime withHour(int hour)
返回此OffsetTime
的副本,并更改日期。偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
hour
- 在结果中设置的小时,从0到23 - 结果
- 基于此时间的请求小时的
OffsetTime
,不为空 - 异常
-
DateTimeException
- 如果小时值无效
-
withMinute
public OffsetTime withMinute(int minute)
返回此OffsetTime
的副本,并更改了分钟。偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
minute
- 在结果中设置的分钟数,从0到59 - 结果
- 基于此时间的
OffsetTime
,请求分钟,不为空 - 异常
-
DateTimeException
- 如果分钟值无效
-
withSecond
public OffsetTime withSecond(int second)
返回此OffsetTime
的副本,并在第二分钟更改。偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
second
- 在结果中设置的second
,从0到59 - 结果
- 基于此时间的
OffsetTime
与请求的秒,不为空 - 异常
-
DateTimeException
- 如果第二个值无效
-
withNano
public OffsetTime withNano(int nanoOfSecond)
返回此OffsetTime
的副本,并更改了纳秒。偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
nanoOfSecond
- 在结果中设置的纳秒数,从0到999,999,999 - 结果
- 基于此时间的
OffsetTime
,请求纳秒,不为空 - 异常
-
DateTimeException
- 如果nanos值无效
-
truncatedTo
public OffsetTime truncatedTo(TemporalUnit unit)
返回此OffsetTime
的副本,并截断时间。截断返回原始时间的副本,其中小于指定单位的字段设置为零。 例如,使用
minutes
单位截断将第二分钟和纳秒级字段设置为零。该单位必须有一个duration ,分为标准日的长度,没有余数。 这包括
ChronoUnit
和DAYS
上提供的所有时间单位。 其他单位抛出异常。偏移量不会影响计算,结果也相同。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
unit
- 要截断的单位,而不是null - 结果
- 基于此时间的
OffsetTime
,截断时间,不为空 - 异常
-
DateTimeException
- 如果无法截断 -
UnsupportedTemporalTypeException
- 如果不支持该装置
-
plus
public OffsetTime plus(TemporalAmount amountToAdd)
返回此时间的副本,并添加指定的数量。这将返回基于此值的
OffsetTime
,并添加指定的量。 金额通常为Duration
,但可以是实现TemporalAmount
界面的任何其他类型。通过调用
TemporalAmount.addTo(Temporal)
将计算委托给amount对象。 实施金额可以任意方式自由实施,但通常会回拨plus(long, TemporalUnit)
。 请参阅金额实施的文档,以确定是否可以成功添加。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
plus
接口Temporal
- 参数
-
amountToAdd
- 要添加的金额,而不是空 - 结果
- 基于此时间的
OffsetTime
添加,不为空 - 异常
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数字溢出
-
plus
public OffsetTime plus(long amountToAdd, TemporalUnit unit)
返回此时间的副本,并添加指定的数量。这将返回基于此值的
OffsetTime
,其中包含已添加单位的金额。 如果无法添加金额,因为不支持该单位或由于某些其他原因,则会引发异常。如果该字段是
ChronoUnit
,则添加由LocalTime.plus(long, TemporalUnit)
实现。 偏移量不是计算的一部分,结果将保持不变。如果该字段是不是一个
ChronoUnit
,则此方法的结果是通过调用获得TemporalUnit.addTo(Temporal, long)
传递this
作为参数。 在这种情况下,该单元确定是否以及如何执行添加。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
plus
在界面Temporal
- 参数
-
amountToAdd
- 要添加到结果中的单位数量可能为负数 -
unit
- 要添加的金额的单位,而不是空 - 结果
- 基于此时间的
OffsetTime
,添加了指定的金额,而不是null - 异常
-
DateTimeException
- 如果无法添加 -
UnsupportedTemporalTypeException
- 如果不支持该设备 -
ArithmeticException
- 如果发生数字溢出
-
plusHours
public OffsetTime plusHours(long hours)
返回此OffsetTime
的副本,并添加指定的小时数。这会将指定的小时数添加到此时,返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
hours
- 要添加的小时数,可能是负数 - 结果
- 基于此时间的
OffsetTime
,添加小时数,不为空
-
plusMinutes
public OffsetTime plusMinutes(long minutes)
返回此OffsetTime
的副本,并添加指定的分钟数。这会将指定的分钟数添加到此时,返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
minutes
- 要添加的分钟数,可能是负数 - 结果
- 基于此时间的
OffsetTime
,添加分钟,不为空
-
plusSeconds
public OffsetTime plusSeconds(long seconds)
返回此OffsetTime
的副本,并添加指定的秒数。这会将指定的秒数添加到此时,返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
seconds
- 要添加的秒数,可能是负数 - 结果
- 基于此时间的
OffsetTime
,添加秒数,不为空
-
plusNanos
public OffsetTime plusNanos(long nanos)
返回此OffsetTime
的副本,OffsetTime
添加了指定的纳秒数。这会在此时添加指定的纳秒数,从而返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
nanos
- 要添加的nanos
,可能是负面的 - 结果
- 基于此时间的
OffsetTime
,加上纳秒,不为空
-
minus
public OffsetTime minus(TemporalAmount amountToSubtract)
返回此时间的副本,并减去指定的数量。这将返回一个
OffsetTime
,基于此值,减去指定的数量。 金额通常为Duration
,但可以是实现TemporalAmount
接口的任何其他类型。通过调用
TemporalAmount.subtractFrom(Temporal)
将计算委托给amount对象。 量实现可以以任何方式自由地实现减法,但是它通常会回调到minus(long, TemporalUnit)
。 请参阅金额实施的文档,以确定是否可以成功减去它。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
minus
在界面Temporal
- 参数
-
amountToSubtract
- 要减去的金额,而不是空 - 结果
- 基于此时间的
OffsetTime
进行减法,而不是空 - 异常
-
DateTimeException
- 如果无法进行减法 -
ArithmeticException
- 如果发生数字溢出
-
minus
public OffsetTime minus(long amountToSubtract, TemporalUnit unit)
返回此时间的副本,并减去指定的数量。这将返回一个
OffsetTime
,基于此,减去单位的数量。 如果无法减去金额,因为不支持该单位或由于某些其他原因,则抛出异常。该方法相当于
plus(long, TemporalUnit)
,其数量为负数 。 有关添加和减法如何工作的完整描述,请参阅该方法。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
minus
,界面Temporal
- 参数
-
amountToSubtract
- 从结果中减去的单位数量可能为负数 -
unit
- 要减去的金额的单位,而不是空 - 结果
- 基于此时间的
OffsetTime
,减去指定的金额,不为空 - 异常
-
DateTimeException
- 如果无法进行减法 -
UnsupportedTemporalTypeException
- 如果不支持该装置 -
ArithmeticException
- 如果发生数字溢出
-
minusHours
public OffsetTime minusHours(long hours)
返回此OffsetTime
的副本,并减去指定的小时数。从此时间减去指定的小时数,返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
hours
- 减去的小时数,可能是负数 - 结果
- 基于此时间的
OffsetTime
减去小时数,不为空
-
minusMinutes
public OffsetTime minusMinutes(long minutes)
返回此OffsetTime
的副本,并减去指定的分钟数。从此时间开始减去指定的分钟数,返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
minutes
- 要减去的分钟数,可能是负数 - 结果
- 基于此时间的
OffsetTime
,减去分钟数,不为空
-
minusSeconds
public OffsetTime minusSeconds(long seconds)
返回此OffsetTime
的副本,并减去指定的秒数。从此时间减去指定的秒数,返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
seconds
- 要减去的秒数,可能是负数 - 结果
- 基于此时间的
OffsetTime
减去秒数,不为空
-
minusNanos
public OffsetTime minusNanos(long nanos)
返回此OffsetTime
的副本,减去指定的纳秒数。从此时间减去指定的纳秒数,返回新的时间。 计算在午夜左右。
此实例是不可变的,不受此方法调用的影响。
- 参数
-
nanos
- 要减去的nanos
,可能是负的 - 结果
- 基于此时间的
OffsetTime
减去纳秒,而不是空
-
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.NANO_OF_DAY
和ChronoField.OFFSET_SECONDS
作为字段。在大多数情况下,使用
Temporal.with(TemporalAdjuster)
更清楚地反转调用模式:// these two lines are equivalent, but the second approach is recommended temporal = thisOffsetTime.adjustInto(temporal); temporal = temporal.with(thisOffsetTime);
此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
adjustInto
,接口TemporalAdjuster
- 参数
-
temporal
- 要调整的目标对象,而不是null - 结果
- 调整后的对象,不为空
- 异常
-
DateTimeException
- 如果无法进行调整 -
ArithmeticException
- 如果发生数字溢出
-
until
public long until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算到另一个时间的时间量。这将根据单个
TemporalUnit
计算两个OffsetTime
对象之间的时间量。 起点和终点是this
和指定的时间。 如果结束在开始之前,结果将是否定的。 例如,可以使用startTime.until(endTime, HOURS)
计算两次之间的小时startTime.until(endTime, HOURS)
。所述
Temporal
传递给此方法被转换为OffsetTime
使用from(TemporalAccessor)
。 如果偏移量在两次之间不同,则指定的结束时间被标准化为具有与此时相同的偏移量。计算返回一个整数,表示两次之间的完整单位数。 例如,11:30Z和13:29Z之间的小时数仅为1小时,因为它是两小时的一分钟。
使用此方法有两种等效方法。 第一种是调用此方法。 第二种是使用
TemporalUnit.between(Temporal, Temporal)
:// these two lines are equivalent amount = start.until(end, MINUTES); amount = MINUTES.between(start, end);
应该根据哪个使代码更具可读性来做出选择。计算在
ChronoUnit
的此方法中实现 。 单位NANOS
,MICROS
,MILLIS
,SECONDS
,MINUTES
,HOURS
和HALF_DAYS
支持。 其他ChronoUnit
值将引发异常。如果该单元不是
ChronoUnit
,则此方法的结果是通过调用获得TemporalUnit.between(Temporal, Temporal)
传递this
作为第一个参数和转换后的输入时间作为第二个参数。此实例是不可变的,不受此方法调用的影响。
- Specified by:
-
until
,接口Temporal
- 参数
-
endExclusive
- 结束时间,不包括,转换为OffsetTime
,不为空 -
unit
- 计量金额的单位,而不是空 - 结果
- 此时间与结束时间之间的时间量
- 异常
-
DateTimeException
- 如果金额无法计算,或结束时间不能转换为OffsetTime
-
UnsupportedTemporalTypeException
- 如果不支持该装置 -
ArithmeticException
- 如果发生数字溢出
-
format
public String format(DateTimeFormatter formatter)
这次使用指定的格式化程序格式化。此时间将传递给格式化程序以生成字符串。
- 参数
-
formatter
- 要使用的格式化程序,而不是null - 结果
- 格式化的时间字符串,不为空
- 异常
-
DateTimeException
- 如果在打印期间发生错误
-
atDate
public OffsetDateTime atDate(LocalDate date)
将此时间与日期相结合以创建OffsetDateTime
。这将返回从此时间和指定日期形成的
OffsetDateTime
。 所有可能的日期和时间组合均有效。- 参数
-
date
- 要结合的日期,而不是null - 结果
- 从此时间和指定日期形成的偏移日期时间,不为空
-
toEpochSecond
public long toEpochSecond(LocalDate date)
将此OffsetTime
转换为自1970-01-01T00:00:00Z时代以来的秒数。这将此偏移时间与指定日期组合以计算纪元秒值,该值是1970-01-01T00:00:00Z的经过秒数。 在时代之后的时间线上的实例是正的,之前是负的。
- 参数
-
date
- localdate,not null - 结果
- 自1970-01-01T00:00:00Z时代以来的秒数可能是负数
- 从以下版本开始:
- 9
-
compareTo
public int compareTo(OffsetTime other)
比较这个OffsetTime
到另一个时间。比较首先基于UTC等效时刻,然后是当地时间。 它与“等于”一致,如
Comparable
所定义。例如,以下是比较器顺序:
-
10:30+01:00
-
11:00+01:00
-
12:00+02:00
-
11:30+01:00
-
12:00+01:00
-
12:30+01:00
equals()
一致。要比较两个
TemporalAccessor
实例的基础本地时间,请使用ChronoField.NANO_OF_DAY
作为比较器。- Specified by:
-
compareTo
,界面Comparable<OffsetTime>
- 参数
-
other
- 另一个要比较的时间,而不是null - 结果
- 比较器值,如果更小则为负,如果更大则为正
-
-
isAfter
public boolean isAfter(OffsetTime other)
检查此OffsetTime
的瞬间是否在指定时间之后,同时应用于共同日期。该方法与
compareTo(java.time.OffsetTime)
中的比较的不同之处在于它仅比较时刻。 这相当于使用相同的日期将两个时间转换为瞬间并比较瞬间。- 参数
-
other
- 要比较的另一个时间,而不是null - 结果
- 如果这是在指定时间的瞬间之后,则为true
-
isBefore
public boolean isBefore(OffsetTime other)
检查此OffsetTime
的瞬间是否在指定时间之前,同时将两次应用于共同日期。该方法与
compareTo(java.time.OffsetTime)
中的比较的不同之处在于它仅比较时刻。 这相当于使用相同的日期将两个时间转换为瞬间并比较瞬间。- 参数
-
other
- 要比较的另一个时间,而不是null - 结果
- 如果这是在指定时间的瞬间之前,则为true
-
isEqual
public boolean isEqual(OffsetTime other)
检查此OffsetTime
的瞬间是否等于指定时间的瞬间同时应用于共同日期。该方法与
compareTo(java.time.OffsetTime)
和equals(java.lang.Object)
中的比较的不同之处在于它仅比较时刻。 这相当于使用相同的日期将两个时间转换为瞬间并比较瞬间。- 参数
-
other
- 要比较的另一个时间,而不是null - 结果
- 如果它等于指定时间的瞬间,则返回true
-
equals
public boolean equals(Object obj)
检查此时间是否等于另一个时间。比较基于本地时间和偏移量。 要比较时间线上的同一时刻,请使用
isEqual(OffsetTime)
。仅比较类型为
OffsetTime
对象,其他类型返回false。 要比较两个TemporalAccessor
实例的基础本地时间,请使用ChronoField.NANO_OF_DAY
作为比较器。- 重写:
-
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)
-
-