public final class Period extends Object implements ChronoPeriod, Serializable
这个类模型的数量或数量的时间,在几年,几个月和几天。看看时间相当于这类Duration
。
时间和时间在夏时制时加入ZonedDateTime
处理不同。一Duration
将增加秒的确切数目,从而持续一天,永远都是24个小时。相比之下,一个Period
将添加一个概念的天,试图维持当地时间。
例如,考虑在白天储蓄缺口增加一个月的某一天,一个为期一天的晚上18:00。的Period
将概念的一天,结果在ZonedDateTime
18:00次日。相比之下,在Duration
将整整24个小时,导致ZonedDateTime
19:00次日(假设一一小时的DST的差距)。
一个时期的支持单位YEARS
,MONTHS
和DAYS
。所有三个字段都是存在的,但可以设置为零。
该系统是现代民法ISO-8601日历日历系统中使用的大多数今天的世界。它相当于proleptic公历闰年的系统,在今天的规则适用于所有的时间。
该期间被建模为一个有向的时间量,这意味着该期间的各个部分可能是负的。
这是一个value-based类;利用身份敏感的操作(包括引用相等(==
),身份的哈希代码,或同步)的实例Period
可能有不可预知的结果应该是可以避免的。的equals
法进行比较。
Modifier and Type | Method and Description |
---|---|
Temporal |
addTo(Temporal temporal)
将此时间添加到指定的时间对象。
|
static Period |
between(LocalDate startDateInclusive, LocalDate endDateExclusive)
获得由年数
Period 月,和两个日期之间的天数。
|
boolean |
equals(Object obj)
检查这一时期是否等于另一个时期。
|
static Period |
from(TemporalAmount amount)
获得
Period 实例从一个时间量。
|
long |
get(TemporalUnit unit)
获取所请求的单元的值。
|
IsoChronology |
getChronology()
获取此期间的时间顺序,这是一段的日历系统。
|
int |
getDays()
获取此期间的天数。
|
int |
getMonths()
获取此期间的月数。
|
List<TemporalUnit> |
getUnits()
获取此期间所支持的单位集。
|
int |
getYears()
获取此期间的年数。
|
int |
hashCode()
此期间的哈希代码。
|
boolean |
isNegative()
检查这一时期的三个单位是否都是负的。
|
boolean |
isZero()
检查这一时期的所有三个单位是否为零。
|
Period |
minus(TemporalAmount amountToSubtract)
返回此期间的一个副本,与指定的周期减去。
|
Period |
minusDays(long daysToSubtract)
返回此期间的一个副本,用指定的天数减去。
|
Period |
minusMonths(long monthsToSubtract)
返回这个周期的一个副本,用指定的月减去。
|
Period |
minusYears(long yearsToSubtract)
返回此期间的一个副本,用指定的年份减去。
|
Period |
multipliedBy(int scalar)
返回一个新的实例,在这个周期中的每个元素乘以指定的标量。
|
Period |
negated()
在这期间的每一笔收益的一个新实例否定。
|
Period |
normalized()
返回此期间的副本与数年和几个月的正常化。
|
static Period |
of(int years, int months, int days)
获得
Period 代表数年、月和日。
|
static Period |
ofDays(int days)
获得
Period 代表天数。
|
static Period |
ofMonths(int months)
获得
Period 代表月数。
|
static Period |
ofWeeks(int weeks)
获得
Period 代表数周。
|
static Period |
ofYears(int years)
获得
Period 代表数年。
|
static Period |
parse(CharSequence text)
从一个文本字符串,如
PnYnMnD 一
Period 。
|
Period |
plus(TemporalAmount amountToAdd)
返回此期间的副本,添加指定的周期。
|
Period |
plusDays(long daysToAdd)
返回此期间的副本,添加指定的日期。
|
Period |
plusMonths(long monthsToAdd)
返回此期间的副本,添加指定的月份。
|
Period |
plusYears(long yearsToAdd)
返回此期间的副本,添加指定的年份。
|
Temporal |
subtractFrom(Temporal temporal)
从指定的对象减去这段时间。
|
String |
toString()
输出成为这一时期的
String ,如
P6Y3M1D 。
|
long |
toTotalMonths()
获取此期间的总月数。
|
Period |
withDays(int days)
返回此期间的一个副本与指定的天数。
|
Period |
withMonths(int months)
返回此期间的副本与指定的月数。
|
Period |
withYears(int years)
用指定的金额返回此期间的副本。
|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
between
public static final Period ZERO
public static Period ofYears(int years)
Period
代表数年。
由此产生的期限将有指定的年份。月和天单位将是零。
years
-年数,阳性或阴性
public static Period ofMonths(int months)
Period
代表月数。
由此产生的期限将有指定的月。几年和几天单位将是零。
months
-月数,阳性或阴性
public static Period ofWeeks(int weeks)
Period
代表数周。
将得到的期间将是天为基础,与天数等于数周乘以7。年和月单位将为零。
weeks
-周数,阳性或阴性
public static Period ofDays(int days)
Period
代表天数。
由此产生的期间将有指定的天数。年和月单位将为零。
days
-天数,阳性或阴性
public static Period of(int years, int months, int days)
Period
代表数年、月和日。
这将创建一个基于几年,几个月和几天的实例。
years
-的时间,可能是负面的
months
-个月的量,可能是负面的
days
-天量,可能是负面的
public static Period from(TemporalAmount amount)
Period
实例从一个时间量。
这得到一个周期的基础上指定的金额。一个TemporalAmount
代表时间量,这可能是基于时间的日期,该厂一Period
提取物。
转换环从数量单位的设置和使用YEARS
,MONTHS
和DAYS
单位创建时期。如果发现任何其他单位,则抛出异常。
如果金额有ChronoPeriod
然后必须使用ISO年表。
amount
-转换的时间量,不为空
DateTimeException
如果无法转换为
Period
ArithmeticException
如果数量的年,月或日超过int
public static Period parse(CharSequence text)
PnYnMnD
一
Period
。
这将解析的基础上,toString()
ISO-8601格式PnYnMnD
和PnW
时期产生的字符串。
字符串的开始与一个可选的标志,以ASCII或正或负的符号表示。如果为负,整个时期被否定。ASCII字母“P”是大写或小写下。然后有四个部分,每一个由一个数字和一个后缀组成。至少四个部分中的一个必须是存在的。部分后缀在ASCII的“Y”、“M”、“W”和“D”的年,月,周,天,大写或小写接受。后缀必须有序。每节数部分必须由ASCII数字。数可以以ASCII或正或负的符号。数量必须解析到一个int
。
领先的加/减征,和其他单位负值不的ISO-8601标准部分。此外,ISO-8601不允许混合之间的PnYnMnD
和PnW
格式。任何一周的投入乘以7,被视为一个数天。
例如,以下是有效的输入:
“2Y”时期年(2)。“3M”时期几个月(3)。“p4w”时期。周(4)“p5d”时期。天(5)“p1y2m3d”时期,(1,2,3)“p1y2m3w4d”时期,(1,2,25)“p-1y2m”时期,(1,2,0)“p1y2m”时期,(1,2,0)
text
-解析文本,不空
DateTimeParseException
如果文本不能被解析为一期
public static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive)
Period
月,和两个日期之间的天数。
开始日期包括在内,但结束日期不是。该期间计算通过删除完整的几个月,然后计算剩余天数,调整,以确保都有相同的标志。几个月的数量,然后分裂成几年和几个月的基础上12个月的一年。一个月被认为是如果一个月的最后一天大于或等于月的开始日。例如,从2010-01-15
到2011-03-18
是一年,两个月三天。
这种方法的结果可以是一个负周期,如果结束之前开始。在每一年,一个月和一天,消极的标志会是一样的。
startDateInclusive
的开始日期,包容,不为空
endDateExclusive
-结束日期,独家,不空
ChronoLocalDate.until(ChronoLocalDate)
public long get(TemporalUnit unit)
get
接口
ChronoPeriod
get
接口
TemporalAmount
unit
-其中
TemporalUnit
返回值
DateTimeException
如果单位不支持
UnsupportedTemporalTypeException
如果单位不支持
public List<TemporalUnit> getUnits()
支持单位YEARS
,MONTHS
和DAYS
。他们是在订单年,几个月,天。
这套可结合使用get(TemporalUnit)
访问期间整个国家。
getUnits
接口
ChronoPeriod
getUnits
接口
TemporalAmount
public IsoChronology getChronology()
的Chronology
代表使用日历系统。该系统是现代民法ISO-8601日历日历系统中使用的大多数今天的世界。它相当于proleptic公历闰年的系统,在今天的规则适用于所有的时间。
getChronology
接口
ChronoPeriod
public boolean isZero()
一零期具有年、月、日单位的价值为零。
isZero
接口
ChronoPeriod
public boolean isNegative()
这检查几年,几个月或几天单位小于零。
isNegative
接口
ChronoPeriod
public int getYears()
这将返回几年单位。
个月单位不会自动与年单位。这意味着一个“15个月”时期不同于一个“1年3个月”的时期。
public int getMonths()
返回几个月单位。
个月单位不会自动与年单位。这意味着一个“15个月”时期不同于一个“1年3个月”的时期。
public int getDays()
这返回天单位。
public Period withYears(int years)
这将在该期间的副本中设置年单位的金额。月和天单位不受影响。
个月单位不会自动与年单位。这意味着一个“15个月”时期不同于一个“1年3个月”的时期。
此实例是不可变的,不受此方法调用的影响。
years
-代表年,可能是负面的
Period
基于这一时期与请求的年,不为空
public Period withMonths(int months)
这将在该期间的副本中设置月单位的数量。几年和几天的单位不受影响。
个月单位不会自动与年单位。这意味着一个“15个月”时期不同于一个“1年3个月”的时期。
此实例是不可变的,不受此方法调用的影响。
months
-代表月,可能是负面的
Period
基于这一时期与请求的月,不为空
public Period withDays(int days)
这将在该期间的副本中设置天数单位。几年和几个月的单位不受影响。
此实例是不可变的,不受此方法调用的影响。
days
-代表天,可能是负面的
Period
基于这一时期与请求的天,不是空的
public Period plus(TemporalAmount amountToAdd)
这是单独经营的年,月和日。没有进行正常化。
例如,“1年,6个月和3天”,加上“2年,2个月和2天”的回报“3年,8个月和5天”。
额通常是Period
实例。其他类型的解释使用from(TemporalAmount)
。
此实例是不可变的,不受此方法调用的影响。
plus
接口
ChronoPeriod
amountToAdd
期-添加,不为空
Period
基于这段时期的要求,不为空
DateTimeException
-如果指定金额已非ISO年表或包含无效单元
ArithmeticException
如果数值溢出时
public Period plusYears(long yearsToAdd)
这将在该期间的副本中添加数年单位。月和天单位不受影响。例如,“1年,6个月和3天”,再加上2年的回报“3年,6个月和3天”。
此实例是不可变的,不受此方法调用的影响。
yearsToAdd
-加年,阳性或阴性
Period
基于这段指定的年增值,不为空
ArithmeticException
如果数值溢出时
public Period plusMonths(long monthsToAdd)
这增加了在这一时期的副本的数量到月单位。几年和几天的单位不受影响。例如,“1年,6个月和3天”,再加上2个月的回报“1年,8个月和3天”。
此实例是不可变的,不受此方法调用的影响。
monthsToAdd
-加个月,阳性或阴性
Period
基于这段指定的月说,没有空
ArithmeticException
如果数值溢出时
public Period plusDays(long daysToAdd)
这增加了在这一时期的副本的天数单位。几年和几个月的单位不受影响。例如,“1年,6个月和3天”,再加上2天的回报“1年,6个月和5天”。
此实例是不可变的,不受此方法调用的影响。
daysToAdd
-加天,阳性或阴性
Period
基于这段指定的天添加,不为空
ArithmeticException
如果数值溢出时
public Period minus(TemporalAmount amountToSubtract)
这是单独经营的年,月和日。没有进行正常化。
例如,“1年,6个月和3天”减去“2年,2个月和2天”的回报“- 1年,4个月和1天”。
额通常是Period
实例。其他类型的解释使用from(TemporalAmount)
。
此实例是不可变的,不受此方法调用的影响。
minus
接口
ChronoPeriod
amountToSubtract
-期减,不为空
Period
基于这段时期的要求减去,不空
DateTimeException
-如果指定金额已非ISO年表或包含无效单元
ArithmeticException
如果数值溢出时
public Period minusYears(long yearsToSubtract)
这减去金额从在一份本期年单位。月和天单位不受影响。例如,“1年,6个月和3天”,减去2年的回报“- 1年,6个月和3天”。
此实例是不可变的,不受此方法调用的影响。
yearsToSubtract
-减去年,阳性或阴性
Period
基于这段指定的年中减去,不空
ArithmeticException
如果数值溢出时
public Period minusMonths(long monthsToSubtract)
这减去金额从在一份本期个月单位。几年和几天的单位不受影响。例如,“1年,6个月和3天”,减去2个月的回报“1年,4个月和3天”。
此实例是不可变的,不受此方法调用的影响。
monthsToSubtract
-减去年,阳性或阴性
Period
基于这段指定月减去,不空
ArithmeticException
如果数值溢出时
public Period minusDays(long daysToSubtract)
这减去金额从本期天数单位。几年和几个月的单位不受影响。例如,“1年,6个月和3天”减去2天的回报“1年,6个月和1天”。
此实例是不可变的,不受此方法调用的影响。
daysToSubtract
-减去月,阳性或阴性
Period
基于这段指定的天减去,不空
ArithmeticException
如果数值溢出时
public Period multipliedBy(int scalar)
这将返回一个与每个年,几个月和天单位单独相乘的周期。例如,一个“2年,- 3个月和4天”乘以3将返回“6年,- 9个月和12天”。没有进行正常化。
multipliedBy
接口
ChronoPeriod
scalar
-标量乘,不为空
Period
基于本期金额乘以标量,不空
ArithmeticException
如果数值溢出时
public Period negated()
这将返回一个与每个的年,月和日单位分别否定。例如,一个时期的“2年,3个月4天”将否定“2年,3个月和4天”。没有进行正常化。
negated
接口
ChronoPeriod
Period
基于这一时期的大量否定,不为空
ArithmeticException
如果数值溢出时,只发生如果一个单位有价值
Long.MIN_VALUE
public Period normalized()
本规范的年和月的单位,离开天单位不变。被调整的月单位有一个绝对值小于11,随着年单位被调整,以补偿。例如,一个“1年和15个月”的期限将被归为“2年3个月”。
数年和数月单位的标志将是相同的正常化后。例如,一个“1年和25个月”的期限将被归为“- 1年和- 1个月”。
此实例是不可变的,不受此方法调用的影响。
normalized
接口
ChronoPeriod
Period
基于本期超额月归年,不空
ArithmeticException
如果数值溢出时
public long toTotalMonths()
这将返回在该期间的总数乘以数年的12,并增加了几个月。
此实例是不可变的,不受此方法调用的影响。
public Temporal addTo(Temporal temporal)
这将返回一个相同可观察类型的时间对象,作为此期间添加的输入。如果时间有一个年代,它必须是国际标准组织的年代。
在大多数情况下,更清晰的用Temporal.plus(TemporalAmount)
反向调用模式。
这两条线是等价的,但第二种方法是建议日期时间=这一时期补充(日期);日期时间=时间。加上(一);
计算工作如下。首先,检查的时间的时间是检查,以确保它是国际标准化组织的时间或空。第二,如果几个月为零,则几年被添加如果非零,否则年和月的组合,如果添加非零。最后,任何天都增加。
这种方法可以确保部分周期可以被添加到部分日期。例如,一年或几个月可以被添加到一个YearMonth
,但一段日子不能包括。该方法还增加了几年和几个月在必要时,以确保正确的行为在月底。
此实例是不可变的,不受此方法调用的影响。
addTo
接口
ChronoPeriod
addTo
接口
TemporalAmount
temporal
-调整时间的对象,不为空
DateTimeException
如果无法添加
ArithmeticException
如果数值溢出时
public Temporal subtractFrom(Temporal temporal)
这将返回一个相同可观察类型的时间对象,作为此期间减去的输入。如果时间有一个年代,它必须是国际标准组织的年代。
在大多数情况下,更清晰的用Temporal.minus(TemporalAmount)
反向调用模式。
这两条线是等价的,但第二种方法是建议这段时间=减去(日期);日期时间=日期减去(时期);
计算工作如下。首先,检查的时间的时间是检查,以确保它是国际标准化组织的时间或空。第二,如果几个月为零,如果是非零的年,否则年和月的组合,如果减去,如果非零。最后,任何日子都被扣除。
这种方法可以确保部分周期可以从一个部分日期减去。例如,一年或几个月可以从YearMonth
减去,但一段日子不能包括。该方法还将和岁月一起在必要的时候,以确保正确的行为在本月底。
此实例是不可变的,不受此方法调用的影响。
subtractFrom
接口
ChronoPeriod
subtractFrom
接口
TemporalAmount
temporal
-调整时间的对象,不为空
DateTimeException
如果不能减
ArithmeticException
如果数值溢出时
public boolean equals(Object obj)
比较是基于类型Period
和三个量。要平等,年,月,日单位必须是独立平等的。请注意,这意味着一个“15个月”的期限不等于一个“1年和3个月”的时期。
equals
接口
ChronoPeriod
equals
方法重写,继承类
Object
obj
-检查对象,空返回false
Object.hashCode()
,
HashMap
public int hashCode()
hashCode
接口
ChronoPeriod
hashCode
方法重写,继承类
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
String
,如
P6Y3M1D
。
输出将在ISO-8601期格式。一零期将为零天,“p0d”。
toString
接口
ChronoPeriod
toString
方法重写,继承类
Object
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.