- 所有已实现的接口:
-
Serializable
,Comparable<Duration>
,TemporalAmount
该类以秒和纳秒的形式模拟时间的数量或时间量。可以使用其他基于持续时间的单位访问它,例如分钟和小时。此外,可以使用DAYS
单位,将其视为等于24小时,因此忽略夏令时效应。请参阅Period
以获取与此类相对应的基于日期的等效类。
物理持续时间可能是无限长的。为了实用性,持续时间存储在类似于Instant
的约束条件中。持续时间使用纳秒分辨率,最大值为可以保存在long
中的秒数。这比当前宇宙的估计年龄还要大。
持续时间的范围需要存储一个大于long
的数字。为了实现这一点,该类存储一个代表秒的long
和一个代表秒内纳秒的int
,始终在0和999,999,999之间。该模型是有向持续时间,意味着持续时间可以是负的。
持续时间以“秒”为单位,但这些秒不一定与基于原子钟的科学“SI秒”定义相同。这种差异仅影响在闰秒附近测量的持续时间,不应影响大多数应用程序。有关秒和时间刻度含义的讨论,请参阅Instant
。
这是一个基于值的类;程序员应该将相等的实例视为可互换的,并且不应将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。应该使用equals
方法进行比较。
- 实现要求:
- 该类是不可变且线程安全的。
- 自版本:
- 1.8
- 另请参见:
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionabs()
返回具有正长度的此持续时间的副本。将此持续时间添加到指定的时间对象。static Duration
获取表示两个时间对象之间持续时间的Duration
。int
将此持续时间与指定的Duration
进行比较。dividedBy
(long divisor) 返回将此持续时间除以指定值的副本。long
返回指定持续时间在此持续时间内发生的整数倍数。boolean
检查此持续时间是否等于指定的Duration
。static Duration
from
(TemporalAmount amount) 从时间量获取Duration
的实例。long
get
(TemporalUnit unit) 获取请求单位的值。int
getNano()
获取此持续时间内秒内的纳秒数。long
获取此持续时间内的秒数。getUnits()
获取此持续时间支持的单位集。int
hashCode()
此持续时间的哈希码。boolean
检查此持续时间是否为负,不包括零。boolean
检查此持续时间是否为正,不包括零。boolean
isZero()
检查此持续时间是否为零长度。minus
(long amountToSubtract, TemporalUnit unit) 返回将指定持续时间减去此持续时间的副本。返回将指定持续时间减去此持续时间的副本。minusDays
(long daysToSubtract) 返回将指定持续时间以标准24小时天数减去此持续时间的副本。minusHours
(long hoursToSubtract) 返回将指定持续时间以小时减去此持续时间的副本。minusMillis
(long millisToSubtract) 返回将指定持续时间以毫秒减去此持续时间的副本。minusMinutes
(long minutesToSubtract) 返回将指定持续时间以分钟减去此持续时间的副本。minusNanos
(long nanosToSubtract) 返回将指定持续时间以纳秒减去此持续时间的副本。minusSeconds
(long secondsToSubtract) 返回将指定持续时间以秒减去此持续时间的副本。multipliedBy
(long multiplicand) 返回将此持续时间乘以标量的副本。negated()
返回长度取反的此持续时间的副本。static Duration
of
(long amount, TemporalUnit unit) 获取表示指定单位中的数量的Duration
。static Duration
ofDays
(long days) 获取表示标准24小时天数的Duration
。static Duration
ofHours
(long hours) 获取表示标准小时数的Duration
。static Duration
ofMillis
(long millis) 获取表示毫秒数的Duration
。static Duration
ofMinutes
(long minutes) 获取表示标准分钟数的Duration
。static Duration
ofNanos
(long nanos) 获取表示纳秒数的Duration
。static Duration
ofSeconds
(long seconds) 获取表示秒数的Duration
。static Duration
ofSeconds
(long seconds, long nanoAdjustment) 获取表示秒数和纳秒调整的Duration
。static Duration
parse
(CharSequence text) 从文本字符串(例如PnDTnHnMn.nS
)获取Duration
。plus
(long amountToAdd, TemporalUnit unit) 返回将指定持续时间添加到此持续时间的副本。返回将指定持续时间添加到此持续时间的副本。plusDays
(long daysToAdd) 返回将指定标准24小时天数添加到此持续时间的副本。plusHours
(long hoursToAdd) 返回将指定小时数添加到此持续时间的副本。plusMillis
(long millisToAdd) 返回将指定毫秒数添加到此持续时间的副本。plusMinutes
(long minutesToAdd) 返回将指定分钟数添加到此持续时间的副本。plusNanos
(long nanosToAdd) 返回将指定纳秒数添加到此持续时间的副本。plusSeconds
(long secondsToAdd) 返回将指定秒数添加到此持续时间的副本。subtractFrom
(Temporal temporal) 从指定的时间对象中减去此持续时间。long
toDays()
获取此持续时间中的天数。long
提取持续时间中的天数。long
toHours()
获取此持续时间中的小时数。int
提取持续时间中的小时部分。long
toMillis()
将此持续时间转换为以毫秒为单位的总长度。int
提取持续时间的毫秒部分。long
获取此持续时间中的分钟数。int
提取持续时间中的分钟部分。long
toNanos()
将此持续时间转换为以long
表示的纳秒总长度。int
获取持续时间中秒内的纳秒部分。long
获取此持续时间中的秒数。int
提取持续时间中的秒部分。toString()
使用基于ISO-8601秒的表示形式的字符串表示此持续时间,例如PT8H6M12.345S
。truncatedTo
(TemporalUnit unit) 返回将此Duration
截断为指定单位的副本。withNanos
(int nanoOfSecond) 返回具有指定秒内纳秒的此持续时间的副本。withSeconds
(long seconds) 返回具有指定秒数的此持续时间的副本。
-
Field Details
-
ZERO
零持续时间的常量。
-
-
Method Details
-
ofDays
获取表示标准24小时天数的Duration
。秒数是基于一天的标准定义计算的,其中每天为86400秒,这意味着一天为24小时。秒内的纳秒字段设置为零。
- 参数:
-
days
- 天数,可以为正数或负数 - 返回:
-
Duration
,不为null - 抛出:
-
ArithmeticException
- 如果输入的天数超出了Duration
的容量
-
ofHours
获取表示标准小时数的Duration
。秒数是基于一小时的标准定义计算的,其中每小时为3600秒。秒内的纳秒字段设置为零。
- 参数:
-
hours
- 小时数,可以为正数或负数 - 返回:
-
Duration
,不为null - 抛出:
-
ArithmeticException
- 如果输入的小时数超出了Duration
的容量
-
ofMinutes
获取表示标准分钟数的Duration
。秒数是基于一分钟的标准定义计算的,其中每分钟为60秒。秒内的纳秒字段设置为零。
- 参数:
-
minutes
- 分钟数,可以为正数或负数 - 返回:
-
Duration
,不为null - 抛出:
-
ArithmeticException
- 如果输入的分钟数超出了Duration
的容量
-
ofSeconds
获取表示秒数的Duration
。秒内的纳秒字段设置为零。
- 参数:
-
seconds
- 秒数,可以为正数或负数 - 返回:
-
Duration
,不为null
-
ofSeconds
获取表示秒数和纳秒调整的Duration
。此方法允许传入任意数量的纳秒。工厂将更改秒和纳秒的值,以确保存储的纳秒在0到999,999,999之间。例如,以下内容将导致完全相同的持续时间:
Duration.ofSeconds(3, 1); Duration.ofSeconds(4, -999_999_999); Duration.ofSeconds(2, 1000_000_001);
- 参数:
-
seconds
- 秒数,可以是正数或负数 -
nanoAdjustment
- 秒数的纳秒调整,可以是正数或负数 - 返回:
-
Duration
,非空 - 抛出:
-
ArithmeticException
- 如果调整导致秒数超过Duration
的容量
-
ofMillis
获取表示毫秒数的Duration
。从指定的毫秒数中提取秒数和纳秒数。
- 参数:
-
millis
- 毫秒数,可以是正数或负数 - 返回:
-
Duration
,非空
-
ofNanos
获取表示纳秒数的Duration
。从指定的纳秒数中提取秒数和纳秒数。
- 参数:
-
nanos
- 纳秒数,可以是正数或负数 - 返回:
-
Duration
,非空
-
of
获取表示指定单位数量的Duration
。参数表示短语的两部分,例如“6小时”。例如:
Duration.of(3, SECONDS); Duration.of(465, HOURS);
此方法仅接受部分单位。单位必须具有确切的持续时间,或者是被视为24小时的ChronoUnit.DAYS
。其他单位会抛出异常。- 参数:
-
amount
- 以单位为度量的持续时间量,可以是正数或负数 -
unit
- 持续时间的度量单位,必须具有确切的持续时间,非空 - 返回:
-
Duration
,非空 - 抛出:
-
DateTimeException
- 如果周期单位具有估计的持续时间 -
ArithmeticException
- 如果发生数值溢出
-
from
从时间量获取Duration
的实例。根据指定的时间量获取持续时间。
TemporalAmount
表示一段时间,可以是基于日期或时间的,此工厂从中提取持续时间。转换循环遍历从时间量中获取的单位集,并使用单位的持续时间来计算总
Duration
。此方法仅接受部分单位。单位必须具有确切的持续时间,或者是被视为24小时的ChronoUnit.DAYS
。如果发现任何其他单位,则会抛出异常。- 参数:
-
amount
- 要转换的时间量,非空 - 返回:
- 等效的持续时间,非空
- 抛出:
-
DateTimeException
- 如果无法转换为Duration
-
ArithmeticException
- 如果发生数值溢出
-
parse
从文本字符串(如PnDTnHnMn.nS
)获取Duration
。将解析持续时间的文本表示,包括
toString()
生成的字符串。接受的格式基于ISO-8601持续时间格式PnDTnHnMn.nS
,其中天被视为确切的24小时。字符串以可选符号开头,由ASCII负号或正号表示。如果为负,则整个周期为负。接下来是大写或小写的ASCII字母“P”。然后是四个部分,每个部分由数字和后缀组成。部分的后缀为ASCII中的“D”、“H”、“M”和“S”,分别表示天、小时、分钟和秒,接受大写或小写。后缀必须按顺序出现。如果有小时、分钟或秒部分,则ASCII字母“T”必须在第一个出现之前。至少必须存在四个部分之一,如果存在“T”,则“T”后必须至少有一个部分。每个部分的数字部分必须由一个或多个ASCII数字组成。数字可能以ASCII负号或正号为前缀。天数、小时数和分钟数必须解析为
long
。秒数必须解析为带有可选小数部分的long
。小数点可以是点或逗号。小数部分可以有零到9位数字。前导加号/减号符号以及其他单位的负值不是ISO-8601标准的一部分。
示例:
"PT20.345S" -- 解析为"20.345秒" "PT15M" -- 解析为"15分钟"(其中一分钟为60秒) "PT10H" -- 解析为"10小时"(其中一小时为3600秒) "P2D" -- 解析为"2天"(其中一天为24小时或86400秒) "P2DT3H4M" -- 解析为"2天、3小时和4分钟" "PT-6H3M" -- 解析为"-6小时和+3分钟" "-PT6H3M" -- 解析为"-6小时和-3分钟" "-PT-6H+3M" -- 解析为"+6小时和-3分钟"
- 参数:
-
text
- 要解析的文本,非空 - 返回:
- 解析后的持续时间,非空
- 抛出:
-
DateTimeParseException
- 如果无法将文本解析为持续时间
-
between
获取两个时间对象之间的持续时间的Duration
。计算两个时间对象之间的持续时间。如果对象类型不同,则基于第一个对象的类型计算持续时间。例如,如果第一个参数是
LocalTime
,则将第二个参数转换为LocalTime
。指定的时间对象必须支持
SECONDS
单位。为了获得完全准确的结果,应支持NANOS
单位或NANO_OF_SECOND
字段。此方法的结果可能是负周期,如果结束时间在开始时间之前。要确保获得正持续时间,请对结果调用
abs()
。- 参数:
-
startInclusive
- 起始时间,包含,非空 -
endExclusive
- 结束时间,不包含,非空 - 返回:
-
Duration
,非空 - 抛出:
-
DateTimeException
- 如果无法获取时间之间的秒数 -
ArithmeticException
- 如果计算超出Duration
的容量
-
get
- 指定者:
-
get
在接口TemporalAmount
- 参数:
-
unit
- 要返回值的TemporalUnit
- 返回:
- 单位的长整型值
- 抛出:
-
DateTimeException
- 如果不支持该单位 -
UnsupportedTemporalTypeException
- 如果不支持该单位
-
getUnits
获取此持续时间支持的单位集。支持的单位为
SECONDS
和NANOS
。它们按照秒和纳秒的顺序返回。此集合可与
get(TemporalUnit)
一起使用,以访问持续时间的整个状态。- 指定者:
-
getUnits
在接口TemporalAmount
- 返回:
- 包含秒和纳秒单位的列表,非空
-
isPositive
public boolean isPositive()检查此持续时间是否为正数,不包括零。Duration
表示时间线上两点之间的有向距离,因此可以是正数、零或负数。此方法检查长度是否大于零。- 返回:
- 如果此持续时间的总长度大于零,则为true
- 自:
- 18
-
isZero
public boolean isZero()检查此持续时间是否为零长度。Duration
表示时间线上两点之间的有向距离,因此可以是正数、零或负数。此方法检查长度是否为零。- 返回:
- 如果此持续时间的总长度等于零,则为true
-
isNegative
public boolean isNegative()检查此持续时间是否为负数,不包括零。Duration
表示时间线上两点之间的有向距禮,因此可以是正数、零或负数。此方法检查长度是否小于零。- 返回:
- 如果此持续时间的总长度小于零,则为true
-
getSeconds
public long getSeconds()获取此持续时间中的秒数。持续时间的长度使用两个字段存储 - 秒和纳秒。纳秒部分是0到999,999,999之间的值,用于调整秒数的长度。通过调用此方法和
getNano()
来定义总持续时间。Duration
表示时间线上两点之间的有向距离。负持续时间由秒部分的负号表示。-1纳秒的持续时间存储为-1秒加上999,999,999纳秒。- 返回:
- 持续时间长度的整秒部分,可以是正数或负数
-
getNano
public int getNano()获取持续时间内的纳秒数。持续时间的长度使用两个字段存储 - 秒和纳秒。纳秒部分的值范围从0到999,999,999,是对秒数长度的调整。总持续时间通过调用此方法和
getSeconds()
来定义。Duration
表示时间线上两点之间的有向距离。负持续时间由秒部分的负号表示。-1纳秒的持续时间存储为-1秒加上999,999,999纳秒。- 返回:
- 持续时间长度的秒内纳秒部分,范围从0到999,999,999
-
withSeconds
返回具有指定秒数的此持续时间的副本。返回具有指定秒数的持续时间,保留此持续时间的纳秒部分。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
seconds
- 要表示的秒数,可以是负数 - 返回:
- 基于此持续时间的持续时间,具有请求的秒数,非空
-
withNanos
返回具有指定纳秒数的此持续时间的副本。返回具有指定纳秒数的持续时间,保留此持续时间的秒部分。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
nanoOfSecond
- 要表示的纳秒数,范围从0到999,999,999 - 返回:
- 基于此持续时间的持续时间,具有请求的纳秒数,非空
- 抛出:
-
DateTimeException
- 如果纳秒数无效
-
plus
返回添加了指定持续时间的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
duration
- 要添加的持续时间,可以是正数或负数,非空 - 返回:
- 基于此持续时间的持续时间,添加了指定的持续时间,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
plus
返回减去指定持续时间的此持续时间的副本。持续时间量是根据指定单位来衡量的。此方法仅接受单位的子集。单位必须具有精确的持续时间,或者是被视为24小时的
ChronoUnit.DAYS
。其他单位会抛出异常。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
amountToAdd
- 要添加的数量,以单位衡量,可以是正数或负数 -
unit
- 数量所衡量的单位,必须具有精确的持续时间,非空 - 返回:
- 基于此持续时间的持续时间,添加了指定的持续时间,非空
- 抛出:
-
UnsupportedTemporalTypeException
- 如果不支持该单位 -
ArithmeticException
- 如果发生数值溢出
-
plusDays
返回添加了指定标准24小时天数的此持续时间的副本。天数乘以86400以获得要添加的秒数。这基于一天定义为24小时的标准。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
daysToAdd
- 要添加的天数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,添加了指定的天数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
plusHours
返回添加了指定小时数的此持续时间的副本。小时数乘以3600以获得要减去的秒数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
hoursToAdd
- 要添加的小时数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,添加了指定的小时数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
plusMinutes
返回添加了指定分钟数的此持续时间的副本。分钟数乘以60以获得要减去的秒数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
minutesToAdd
- 要添加的分钟数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,添加了指定的分钟数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
plusSeconds
返回添加了指定秒数的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
secondsToAdd
- 要添加的秒数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,添加了指定的秒数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
plusMillis
返回添加了指定毫秒数的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
millisToAdd
- 要添加的毫秒数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,添加了指定的毫秒数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
plusNanos
返回添加了指定纳秒数的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
nanosToAdd
- 要添加的纳秒数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,添加了指定的纳秒数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minus
返回减去指定持续时间的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
duration
- 要减去的持续时间,可以是正数或负数,非空 - 返回:
- 基于此持续时间的持续时间,减去了指定的持续时间,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minus
返回减去指定持续时间的此持续时间的副本。持续时间量是根据指定单位来衡量的。此方法仅接受单位的子集。单位必须具有精确的持续时间,或者是被视为24小时的
ChronoUnit.DAYS
。其他单位会抛出异常。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
amountToSubtract
- 要减去的数量,以单位衡量,可以是正数或负数 -
unit
- 数量所衡量的单位,必须具有精确的持续时间,非空 - 返回:
- 基于此持续时间的持续时间,减去了指定的持续时间,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minusDays
返回减去指定标准24小时天数的此持续时间的副本。天数乘以86400以获得要减去的秒数。这基于一天定义为24小时的标准。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
daysToSubtract
- 要减去的天数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,减去了指定的天数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minusHours
返回减去指定小时数的此持续时间的副本。小时数乘以3600以获得要减去的秒数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
hoursToSubtract
- 要减去的小时数,可以是正数或负数 - 返回:
- 基于此持续时间的持续时间,减去了指定的小时数,非空
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minusMinutes
返回减去指定分钟数的此持续时间的副本。分钟数乘以60以获得要减去的秒数。
此实例是不可变的,不受此方法调用的影响。
- 参数:
-
minutesToSubtract
- 要减去的分钟数,可以是正数或负数 - 返回:
-
基于此持续时间的一个
Duration
,减去指定分钟数后的结果,不为null - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minusSeconds
返回一个减去指定秒数后的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
secondsToSubtract
- 要减去的秒数,可以是正数或负数 - 返回:
-
基于此持续时间的一个
Duration
,减去指定秒数后的结果,不为null - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minusMillis
返回一个减去指定毫秒数后的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
millisToSubtract
- 要减去的毫秒数,可以是正数或负数 - 返回:
-
基于此持续时间的一个
Duration
,减去指定毫秒数后的结果,不为null - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
minusNanos
返回一个减去指定纳秒数后的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
nanosToSubtract
- 要减去的纳秒数,可以是正数或负数 - 返回:
-
基于此持续时间的一个
Duration
,减去指定纳秒数后的结果,不为null - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
multipliedBy
返回一个乘以标量后的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
multiplicand
- 要将持续时间乘以的值,可以是正数或负数 - 返回:
-
基于此持续时间的一个
Duration
,乘以指定标量后的结果,不为null - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
dividedBy
返回一个除以指定值后的此持续时间的副本。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
divisor
- 要将持续时间除以的值,可以是正数或负数,不能为零 - 返回:
-
基于此持续时间的一个
Duration
,除以指定除数后的结果,不为null - 抛出:
-
ArithmeticException
- 如果除数为零或发生数值溢出
-
dividedBy
返回指定持续时间在此持续时间内完整发生的次数。此实例是不可变的,不受此方法调用的影响。
- 参数:
-
divisor
- 要将持续时间除以的值,可以是正数或负数,不能为null - 返回:
-
指定
Duration
在此持续时间内完整发生的次数,向零舍入,可能为负数 - 抛出:
-
ArithmeticException
- 如果除数为零或发生数值溢出 - 自:
- 9
-
negated
返回一个长度取反后的此持续时间的副本。此方法交换此持续时间的总长度的符号。例如,
PT1.3S
将返回为PT-1.3S
。此实例是不可变的,不受此方法调用的影响。
- 返回:
-
基于此持续时间的一个
Duration
,取反后的结果,不为null - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
abs
返回一个长度为正的此持续时间的副本。此方法通过有效地从任何负总长度中去除符号来返回一个正持续时间。例如,
PT-1.3S
将返回为PT1.3S
。此实例是不可变的,不受此方法调用的影响。
- 返回:
-
基于此持续时间的一个
Duration
,绝对长度的结果,不为null - 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
addTo
将此持续时间添加到指定的时间对象中。这将返回一个与输入相同可观察类型的时间对象,其中添加了此持续时间。
在大多数情况下,通过使用
Temporal.plus(TemporalAmount)
来反转调用模式会更清晰。// 这两行是等效的,但推荐第二种方法 dateTime = thisDuration.addTo(dateTime); dateTime = dateTime.plus(thisDuration);
计算将先添加秒数,然后纳秒数。只会添加非零数量。
此实例是不可变的,不受此方法调用的影响。
- 指定者:
-
addTo
在接口TemporalAmount
- 参数:
-
temporal
- 要调整的时间对象,不能为null - 返回:
- 调整后的相同类型对象,不为null
- 抛出:
-
DateTimeException
- 如果无法添加 -
ArithmeticException
- 如果发生数值溢出
-
subtractFrom
从指定的时间对象中减去此持续时间。这将返回一个与输入相同可观察类型的时间对象,其中减去了此持续时间。
在大多数情况下,通过使用
Temporal.minus(TemporalAmount)
来反转调用模式会更清晰。// 这两行是等效的,但推荐第二种方法 dateTime = thisDuration.subtractFrom(dateTime); dateTime = dateTime.minus(thisDuration);
计算将先减去秒数,然后纳秒数。只会添加非零数量。
此实例是不可变的,不受此方法调用的影响。
- 指定者:
-
subtractFrom
在接口TemporalAmount
- 参数:
-
temporal
- 要调整的时间对象,不能为null - 返回:
- 调整后的相同类型对象,不为null
- 抛出:
-
DateTimeException
- 如果无法减去 -
ArithmeticException
- 如果发生数值溢出
-
toDays
public long toDays()获取此持续时间中的天数。通过将秒数除以86400来返回持续时间中的总天数。这基于一天的标准定义为24小时。
此实例是不可变的,不受此方法调用的影响。
- 返回:
- 持续时间中的天数,可能为负数
-
toHours
public long toHours()获取此持续时间中的小时数。通过将秒数除以3600来返回持续时间中的总小时数。
此实例是不可变的,不受此方法调用的影响。
- 返回:
- 持续时间中的小时数,可能为负数
-
toMinutes
public long toMinutes()获取此持续时间中的分钟数。通过将秒数除以60来返回持续时间中的总分钟数。
此实例是不可变的,不受此方法调用的影响。
- 返回:
- 持续时间中的分钟数,可能为负数
-
toSeconds
public long toSeconds()获取此持续时间中的秒数。返回持续时间中的总整秒数。
此实例是不可变的,不受此方法调用的影响。
- 返回:
- 持续时间长度的整秒部分,可能为正数或负数
- 自:
- 9
-
toMillis
public long toMillis()将此持续时间转换为毫秒中的总长度。如果此持续时间太大,无法容纳在
long
毫秒中,则会抛出异常。如果此持续时间的精度大于毫秒,则转换将丢弃任何多余的精度信息,就好像纳秒数按一百万进行整数除法。
- 返回:
- 持续时间的总长度,以毫秒为单位
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
toNanos
public long toNanos()将此持续时间转换为以long
表示的纳秒中的总长度。如果此持续时间太大,无法容纳在
long
纳秒中,则会抛出异常。- 返回:
- 持续时间的总长度,以纳秒为单位
- 抛出:
-
ArithmeticException
- 如果发生数值溢出
-
toDaysPart
public long toDaysPart()提取持续时间中的天数。通过将秒数除以86400来返回持续时间中的总天数。这基于一天的标准定义为24小时。
此实例是不可变的,不受此方法调用的影响。
- API注释:
-
此方法的行为与
toDays()
完全相同。 - 返回:
- 持续时间中的天数,可能为负数
- 自:
- 9
-
toHoursPart
public int toHoursPart()提取持续时间中的小时部分。通过将
toHours()
除以一天的小时数来返回剩余小时数。这是基于标准定义的一天为24小时。此实例是不可变的,并且不受此方法调用的影响。
- 返回:
- 持续时间中的小时部分,可能为负数
- 自:
- 9
-
toMinutesPart
public int toMinutesPart()提取持续时间中的分钟部分。通过将
toMinutes()
除以一小时的分钟数来返回剩余分钟数。这是基于标准定义的一小时为60分钟。此实例是不可变的,并且不受此方法调用的影响。
- 返回:
- 持续时间中的分钟部分,可能为负数
- 自:
- 9
-
toSecondsPart
public int toSecondsPart()提取持续时间中的秒部分。通过将
toSeconds()
除以一分钟的秒数来返回剩余秒数。这是基于标准定义的一分钟为60秒。此实例是不可变的,并且不受此方法调用的影响。
- 返回:
- 持续时间中的秒部分,可能为负数
- 自:
- 9
-
toMillisPart
public int toMillisPart()提取持续时间中的毫秒部分。通过将纳秒数除以1,000,000来返回毫秒部分。持续时间的长度使用两个字段存储 - 秒和纳秒。纳秒部分是一个从0到999,999,999的值,用于调整秒数的长度。总持续时间由调用
getNano()
和getSeconds()
来定义。此实例是不可变的,并且不受此方法调用的影响。
- 返回:
- 持续时间中的毫秒部分。
- 自:
- 9
-
toNanosPart
public int toNanosPart()获取持续时间中秒数内的纳秒部分。持续时间的长度使用两个字段存储 - 秒和纳秒。纳秒部分是一个从0到999,999,999的值,用于调整秒数的长度。总持续时间由调用
getNano()
和getSeconds()
来定义。此实例是不可变的,并且不受此方法调用的影响。
- 返回:
- 持续时间长度中秒内的纳秒部分,从0到999,999,999
- 自:
- 9
-
truncatedTo
返回截断为指定单位的此Duration
的副本。截断持续时间将返回原始持续时间的副本,其中概念字段小于指定单位的部分设置为零。例如,使用
MINUTES
单位进行截断将向零舍入到最接近的分钟,将秒和纳秒设置为零。单位必须具有可被标准天长度整除的持续时间,而不产生余数。这包括所有
ChronoUnit
上的基于时间的单位和DAYS
。其他ChronoUnits会抛出异常。此实例是不可变的,并且不受此方法调用的影响。
- 参数:
-
unit
- 要截断到的单位,不能为空 - 返回:
-
基于此持续时间的截断时间的
Duration
,不能为空 - 抛出:
-
DateTimeException
- 如果单位无效以进行截断 -
UnsupportedTemporalTypeException
- 如果不支持该单位 - 自:
- 9
-
compareTo
将此持续时间与指定的Duration
进行比较。比较基于持续时间的总长度。它是"与equals一致"的,如
Comparable
所定义。- 指定者:
-
compareTo
在接口Comparable<Duration>
- 参数:
-
otherDuration
- 要比较的其他持续时间,不能为空 - 返回:
-
比较器值,如果此持续时间小于
otherDuration
则小于零,如果相等则为零,如果此持续时间大于otherDuration
则大于零
-
equals
检查此持续时间是否等于指定的Duration
。比较基于持续时间的总长度。
-
hashCode
public int hashCode()此持续时间的哈希码。 -
toString
使用ISO-8601基于秒的表示法返回此持续时间的字符串表示,例如PT8H6M12.345S
。返回字符串的格式将为
PTnHnMnS
,其中n是持续时间的相关小时、分钟或秒部分。任何小数秒都放在秒部分的小数点后。如果某部分的值为零,则省略该部分。小时、分钟和秒将具有相同的符号。示例:
"20.345秒" -- "PT20.345S "15分钟" (15 * 60秒) -- "PT15M" "10小时" (10 * 3600秒) -- "PT10H" "2天" (2 * 86400秒) -- "PT48H"
注意,24小时的倍数不会输出为天,以避免与Period
混淆。
-