public final class LocalDate extends Object implements Temporal, TemporalAdjuster, ChronoLocalDate, Serializable
2007-12-03
,如2007-12-03
。
LocalDate
是一个不可变的日期时间对象,表示日期,通常被视为年月日。 也可以访问其他日期字段,例如日期,星期几和星期。 例如,值“2007年10月2日”可存储在LocalDate
。
该类不存储或表示时间或时区。 相反,它是日期的描述,用于生日。 它不能代表时间线上的即时信息,而没有附加信息,如偏移或时区。
ISO-8601日历系统是当今世界绝大多数的现代民用日历系统。 它相当于今天的闰年规则一直适用于日常生活的公历日历系统。 对于今天写的大多数应用,ISO-8601规则是完全合适的。 然而,任何利用历史日期并要求它们准确的应用程序都将发现ISO-8601方法不合适。
这是一个value-based课; 使用身份敏感的操作(包括引用相等(的==
上的实例),标识哈希码,或同步) LocalDate
可具有不可预测的结果,应当避免。 equals
方法应用于比较。
Modifier and Type | Field and Description |
---|---|
static LocalDate |
MAX
最大支持
LocalDate '''999999999-12-31'。
|
static LocalDate |
MIN
最低支持
LocalDate ,'-999999999-01-01'。
|
Modifier and Type | Method and Description |
---|---|
Temporal |
adjustInto(Temporal temporal)
调整指定的时间对象与此对象的日期相同。
|
LocalDateTime |
atStartOfDay()
将此日期与午夜时间结合
LocalDateTime ,在此日期开始时创建一个
LocalDateTime 。
|
ZonedDateTime |
atStartOfDay(ZoneId zone)
根据时区中的规则,在最早的有效时间内从此日期返回划分的日期时间。
|
LocalDateTime |
atTime(int hour, int minute)
结合此日期与时间创建一个
LocalDateTime 。
|
LocalDateTime |
atTime(int hour, int minute, int second)
结合此日期与时间创建一个
LocalDateTime 。
|
LocalDateTime |
atTime(int hour, int minute, int second, int nanoOfSecond)
结合此日期与时间创建一个
LocalDateTime 。
|
LocalDateTime |
atTime(LocalTime time)
结合此日期与时间创建一个
LocalDateTime 。
|
OffsetDateTime |
atTime(OffsetTime time)
将此日期与偏移时间相结合以创建
OffsetDateTime 。
|
int |
compareTo(ChronoLocalDate other)
将此日期与另一个日期进行比较。
|
boolean |
equals(Object obj)
检查这个日期是否等于另一个日期。
|
String |
format(DateTimeFormatter formatter)
使用指定的格式化程序格式化此日期。
|
static LocalDate |
from(TemporalAccessor temporal)
从时间对象获取一个
LocalDate 的实例。
|
int |
get(TemporalField field)
从此日期获取指定字段的
int 。
|
IsoChronology |
getChronology()
获取这个日期的时间顺序,即ISO日历系统。
|
int |
getDayOfMonth()
获取月份字段。
|
DayOfWeek |
getDayOfWeek()
获取星期几字段,这是一个枚举
DayOfWeek 。
|
int |
getDayOfYear()
获得日期字段。
|
Era |
getEra()
获得这个时代适用的时代。
|
long |
getLong(TemporalField field)
从此日期获取指定字段的值为
long 。
|
Month |
getMonth()
使用
Month 枚举获取月份字段。
|
int |
getMonthValue()
将月份字段从1到12。
|
int |
getYear()
获取年份字段。
|
int |
hashCode()
这个日期的哈希码。
|
boolean |
isAfter(ChronoLocalDate other)
检查此日期是否在指定日期之后。
|
boolean |
isBefore(ChronoLocalDate other)
检查此日期是否在指定日期之前。
|
boolean |
isEqual(ChronoLocalDate other)
检查此日期是否等于指定的日期。
|
boolean |
isLeapYear()
根据ISO培训日历系统规则,检查年份是否是闰年。
|
boolean |
isSupported(TemporalField field)
检查指定的字段是否受支持。
|
boolean |
isSupported(TemporalUnit unit)
检查指定的单位是否受支持。
|
int |
lengthOfMonth()
返回由此日期表示的月份的长度。
|
int |
lengthOfYear()
返回由此日期表示的年份的长度。
|
LocalDate |
minus(long amountToSubtract, TemporalUnit unit)
返回此日期的副本,减去指定的金额。
|
LocalDate |
minus(TemporalAmount amountToSubtract)
返回此日期的副本,减去指定的金额。
|
LocalDate |
minusDays(long daysToSubtract)
返回此
LocalDate 的副本,并减去指定的天数。
|
LocalDate |
minusMonths(long monthsToSubtract)
返回此
LocalDate 的副本,指定的时间间隔减去。
|
LocalDate |
minusWeeks(long weeksToSubtract)
返回此
LocalDate 一个副本,其中指定的周期以周为单位减去。
|
LocalDate |
minusYears(long yearsToSubtract)
返回此
LocalDate 的副本,以减去的年份为单位。
|
static LocalDate |
now()
从默认时区的系统时钟获取当前日期。
|
static LocalDate |
now(Clock clock)
从指定的时钟获取当前日期。
|
static LocalDate |
now(ZoneId zone)
从指定时区的系统时钟获取当前日期。
|
static LocalDate |
of(int year, int month, int dayOfMonth)
从一年,一个月和一天获得一个
LocalDate 的实例。
|
static LocalDate |
of(int year, Month month, int dayOfMonth)
从一年,一个月和一天获得一个
LocalDate 的实例。
|
static LocalDate |
ofEpochDay(long epochDay)
从时代天数获得一个
LocalDate 的实例。
|
static LocalDate |
ofYearDay(int year, int dayOfYear)
从一年和一年的一年中获得
LocalDate 的实例。
|
static LocalDate |
parse(CharSequence text)
从一个文本字符串(如
2007-12-03 获取一个
LocalDate 的实例。
|
static LocalDate |
parse(CharSequence text, DateTimeFormatter formatter)
使用特定格式化
LocalDate 从文本字符串获取
LocalDate 的实例。
|
LocalDate |
plus(long amountToAdd, TemporalUnit unit)
返回此日期的副本,并添加指定的金额。
|
LocalDate |
plus(TemporalAmount amountToAdd)
返回此日期的副本,并添加指定的金额。
|
LocalDate |
plusDays(long daysToAdd)
返回指定天数的
LocalDate 的副本。
|
LocalDate |
plusMonths(long monthsToAdd)
返回这个
LocalDate 的副本,其指定的时间段以月为单位。
|
LocalDate |
plusWeeks(long weeksToAdd)
返回这个
LocalDate 的副本,并以指定的周期添加周数。
|
LocalDate |
plusYears(long yearsToAdd)
返回这个
LocalDate 的副本,其中指定的时间段以添加的年数表示。
|
<R> R |
query(TemporalQuery<R> query)
使用指定的查询查询此日期。
|
ValueRange |
range(TemporalField field)
获取指定字段的有效值的范围。
|
long |
toEpochDay()
将此日期转换为大纪元日。
|
String |
toString()
将此日期输出为
String ,如
2007-12-03 。
|
Period |
until(ChronoLocalDate endDateExclusive)
将此日期和其他日期之间的期间计算为
Period 。
|
long |
until(Temporal endExclusive, TemporalUnit unit)
根据指定的单位计算直到另一个日期的时间量。
|
LocalDate |
with(TemporalAdjuster adjuster)
返回此日期的调整副本。
|
LocalDate |
with(TemporalField field, long newValue)
返回此日期的副本,并将指定的字段设置为新值。
|
LocalDate |
withDayOfMonth(int dayOfMonth)
返回此日期的副本,并更改日期。
|
LocalDate |
withDayOfYear(int dayOfYear)
返回此日期的副本,并更改日期。
|
LocalDate |
withMonth(int month)
返回这个日期的副本,并更改年月日。
|
LocalDate |
withYear(int year)
返回此日期的副本,并更改年份。
|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
timeLineOrder
public static final LocalDate MIN
LocalDate
,'-999999999-01-01'。
应用程序可以将其用作“过去”的日期。
public static final LocalDate MAX
LocalDate
,'+ 999999999-12-31'。
应用程序可以将其用作“远未来”的日期。
public static LocalDate now()
public static LocalDate now(Clock clock)
这将查询指定的时钟以获取当前日期 - 今天。 使用此方法可以使用备用时钟进行测试。 备用时钟可以使用dependency injection
引入 。
clock
- 要使用的时钟,不为空
public static LocalDate of(int year, Month month, int dayOfMonth)
LocalDate
的实例。
这将返回一个LocalDate
与指定的年,月和日。 该日期必须在年和月中有效,否则将抛出异常。
year
- 从MIN_YEAR到MAX_YEAR的年份
month
- 代表的月份,不为空
dayOfMonth
- 代表从1到31的月份
DateTimeException
- 如果任何字段的值超出范围,或者如果月的日期对于月份无效
public static LocalDate of(int year, int month, int dayOfMonth)
LocalDate
的实例。
这将返回一个LocalDate
与指定的年,月和日。 该日期必须在年和月中有效,否则将抛出异常。
year
- 从MIN_YEAR到MAX_YEAR的年份
month
- 从1月1日至12日(12月)的月份,
dayOfMonth
- 代表从1到31的月份
DateTimeException
- 如果任何字段的值超出范围,或者月的日期对于月份无效
public static LocalDate ofYearDay(int year, int dayOfYear)
LocalDate
的实例。
这将返回一个LocalDate
与指定年份和日期。 年份必须在一年中有效,否则将被抛出异常。
year
- 从MIN_YEAR到MAX_YEAR的年份
dayOfYear
- 代表从1到366的日期
DateTimeException
- 如果任何字段的值超出范围,或者如果一年中的日期对于月份无效
public static LocalDate ofEpochDay(long epochDay)
LocalDate
的实例。
这将返回一个LocalDate
与指定的时代。 EPOCH_DAY
是第0天为1970-01-01的简单递增计数。 负数表示较早的日子。
epochDay
- 根据时代1970-01-01转换的大纪元日
DateTimeException
- 如果纪元日数超过支持的日期范围
public static LocalDate from(TemporalAccessor temporal)
LocalDate
的实例。
这将基于指定的时间获取本地日期。 A TemporalAccessor
表示一个任意的日期和时间信息,这个工厂转换为LocalDate
一个实例。
转换使用TemporalQueries.localDate()
查询,它依赖于提取EPOCH_DAY
字段。
该方法中,功能接口的签名相匹配TemporalQuery
允许它被用作通过方法参考,查询LocalDate::from
。
from
在接口
ChronoLocalDate
temporal
- 要转换的时间对象,不为null
DateTimeException
- 如果无法转换为
LocalDate
Chronology.date(TemporalAccessor)
public static LocalDate parse(CharSequence text)
2007-12-03
获取一个LocalDate
的实例。
字符串必须表示有效的日期,并使用DateTimeFormatter.ISO_LOCAL_DATE
进行解析。
text
- 要解析的文本,如“2007-12-03”,不为空
DateTimeParseException
- 如果文本无法解析
public static LocalDate parse(CharSequence text, DateTimeFormatter formatter)
LocalDate
从文本字符串获取LocalDate
的实例。
使用格式化程序解析文本,返回日期。
text
- 要解析的文本,不为null
formatter
- 要使用的格式化程序,不为null
DateTimeParseException
- 如果文本无法解析
public boolean isSupported(TemporalField field)
这将检查是否可以查询指定字段的日期。 如果是假,然后调用range
, get
和with(TemporalField, long)
方法会抛出异常。
如果该字段是一个ChronoField
,那么查询是在这里实现的。 支持的字段有:
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
ChronoField
实例将返回false。
如果该字段是不是一个ChronoField
,则此方法的结果是通过调用获得TemporalField.isSupportedBy(TemporalAccessor)
传递this
作为参数。 字段是否受支持由字段决定。
isSupported
在界面
ChronoLocalDate
isSupported
在界面
TemporalAccessor
field
- 要检查的字段,null返回false
public boolean isSupported(TemporalUnit unit)
这将检查指定的单位是否可以添加到该日期时间或从该日期时间中减去。 如果是false,那么调用plus(long, TemporalUnit)
和minus
方法会抛出异常。
如果单位是ChronoUnit
,那么查询是在这里实现的。 支持的单位是:
DAYS
WEEKS
MONTHS
YEARS
DECADES
CENTURIES
MILLENNIA
ERAS
ChronoUnit
实例将返回false。
如果该单元不是ChronoUnit
,则通过调用TemporalUnit.isSupportedBy(Temporal)
this
作为参数的this
获得该方法的结果。 设备是否受支持由本机决定。
isSupported
在界面
ChronoLocalDate
isSupported
在界面
Temporal
unit
- 要检查的单位,null返回false
public ValueRange range(TemporalField field)
范围对象表示字段的最小和最大有效值。 此日期用于提高返回范围的准确性。 如果不可能返回范围,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是ChronoField
,那么查询是在这里实现的。 supported fields
将返回适当的范围实例。 所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果字段不是ChronoField
,则通过调用TemporalField.rangeRefinedBy(TemporalAccessor)
this
作为参数的this
获得该方法的结果。 是否可以获得范围由字段确定。
range
在界面
TemporalAccessor
field
- 查询范围的字段,不为null
DateTimeException
- 如果不能获得该字段的范围
UnsupportedTemporalTypeException
- 如果该字段不被支持
public int get(TemporalField field)
int
。
这将查询此日期指定字段的值。 返回的值将始终在该字段的值的有效范围内。 如果不可能返回值,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是ChronoField
,那么查询是在这里实现的。 supported fields
将返回基于此日期的有效值,但EPOCH_DAY
和PROLEPTIC_MONTH
除了EPOCH_DAY
以外的一个int
,并DateTimeException
。 所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是一个ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 该值是否可以获得,该值代表什么值由该字段决定。
get
在界面
TemporalAccessor
field
- 要获取的字段,不为null
DateTimeException
- 如果无法获取字段的值,或者该值超出了该字段的有效值的范围
UnsupportedTemporalTypeException
- 如果该字段不受支持或值的范围超过
int
ArithmeticException
- 如果发生数字溢出
public long getLong(TemporalField field)
long
。
这将查询此日期指定字段的值。 如果不可能返回值,因为该字段不受支持或出于某种其他原因,则抛出异常。
如果该字段是ChronoField
,那么查询在这里实现。 supported fields
将根据此日期返回有效值。 所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是一个ChronoField
,则此方法的结果是通过调用获得TemporalField.getFrom(TemporalAccessor)
传递this
作为参数。 该值是否可以获得,该值代表什么值由该字段决定。
getLong
在界面
TemporalAccessor
field
- 要获取的字段,不为null
DateTimeException
- 如果无法获取该字段的值
UnsupportedTemporalTypeException
- 如果该字段不被支持
ArithmeticException
- 如果发生数字溢出
public IsoChronology getChronology()
Chronology
代表正在使用的日历系统。 ISO-8601日历系统是当今世界绝大多数的现代民用日历系统。 它相当于今天的闰年规则一直适用于日常生活的公历日历系统。
getChronology
在界面
ChronoLocalDate
public Era getEra()
官方的ISO-8601标准没有定义时间,但是IsoChronology
没有。 它从一年前开始定义了两个时代的“CE”,从零开始定义了“公元前”。 由于Julian-Gregorian割接之前的日期与历史不一致,“BCE”和“CE”之间的切换也不与通常使用“BC”和“AD”的常用的时间对齐。
该类的用户通常应该忽略此方法,因为它主要用于履行需要支持日文日历系统的ChronoLocalDate
合同。
返回的时代将是一个能够与使用==
运算符的IsoChronology
中的常量进行比较的==
。
getEra
在界面
ChronoLocalDate
IsoChronology
时代常数适用于此日期,不为空
public int getYear()
此方法返回一年的int
值int
值。
通过这种方法返回的年份是根据get(YEAR)是get(YEAR)
。 要获得年龄,使用get(YEAR_OF_ERA)
。
public int getMonthValue()
此方法将一个月作为int
从1到12返回。如果通过调用getMonth()
使用枚举Month
,应用程序代码通常会更加清晰。
getMonth()
public Month getMonth()
getMonthValue()
public int getDayOfMonth()
此方法返回月份的int
值int
值。
public int getDayOfYear()
此方法返回原始年份int
值。
public DayOfWeek getDayOfWeek()
DayOfWeek
。
此方法返回星期几的枚举DayOfWeek
。 这避免了int
值意味着什么的int
。 如果您需要访问原始的int
值,则枚举将提供int value
。
附加信息可以从DayOfWeek
获得。 这包括值的文本名称。
public boolean isLeapYear()
这种方法在整个时间线上应用目前的闰年规则。 一般来说,一年是一个闰年,如果没有余数可以被四分割。 但是,除了100岁之外,年份可以被分割为100岁,除了年龄可以被400除外。
例如,1904年是一个闰年,可以被4整除。1900年不是一个闰年,因为它可以被100整除,然而2000年是一个闰年,因为它可以被400除数。
计算是应激的 - 将相同的规则应用到远未来很远的地方。 这在历史上是不准确的,但对于ISO-8601标准是正确的。
isLeapYear
在界面
ChronoLocalDate
public int lengthOfMonth()
这将以天为单位返回月份的长度。 例如,1月份的日期将返回31。
lengthOfMonth
在接口
ChronoLocalDate
public int lengthOfYear()
这将返回年份的长度,以天数为365或366。
lengthOfYear
在界面
ChronoLocalDate
public LocalDate with(TemporalAdjuster adjuster)
这将返回一个LocalDate
,基于这一个,调整日期。 调整使用指定的调整器策略对象进行。 阅读调整器的文档,了解将进行什么调整。
一个简单的调整器可能只是设置一个字段,如年份字段。 更复杂的调整器可能会将日期设置为该月的最后一天。 TemporalAdjuster
提供了一些常见的调整 。 这些包括找到“月的最后一天”和“下周三”。 关键的日期时间课程还实现了TemporalAdjuster
界面,如Month
和MonthDay
。 调整员负责处理特殊情况,如月份和闰年的不同长度。
例如这个代码在7月的最后一天返回一个日期:
import static java.time.Month.*;
import static java.time.temporal.Adjusters.*;
result = localDate.with(JULY).with(lastDayOfMonth());
该方法的结果是通过在指定的调整器上通过this
作为参数来调用TemporalAdjuster.adjustInto(Temporal)
方法获得的。
此实例是不可变的,不受此方法调用的影响。
with
在界面
ChronoLocalDate
with
在界面
Temporal
adjuster
- 调整器使用,不为空
LocalDate
基于
this
进行了调整,不为null
DateTimeException
- 如果不能进行调整
ArithmeticException
- 如果发生数字溢出
public LocalDate with(TemporalField field, long newValue)
这将返回一个LocalDate
,基于此,更改指定字段的值。 这可以用于更改任何支持的字段,例如年,月或月。 如果不可能设置该值,因为该字段不受支持或出于某种其他原因,则抛出异常。
在某些情况下,更改指定字段可能会导致生成日期无效,例如将月份从1月31日更改为2月将导致日期无效。 在这种情况下,该领域负责解决日期。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
如果该字段是ChronoField
,则在此处实施调整。 支持的字段的行为如下:
DAY_OF_WEEK
- 返回指定LocalDate
的LocalDate。 日期在周一至周日的边界内向前或向后调整至6天。 ALIGNED_DAY_OF_WEEK_IN_MONTH
- 返回一个LocalDate
与指定的对齐的星期几。 日期被调整到指定的基于月的对齐日 - 星期。 统计周数将被计算在一个月的第一个星期从该月的第一天开始。 这可能导致日期在下个月被移动到6天。 ALIGNED_DAY_OF_WEEK_IN_YEAR
- 返回一个LocalDate
与指定的对齐方式的星期几。 日期被调整到指定的基于年的对齐的星期几。 统计周数,使得某一年的第一周从那一年的第一天开始。 这可能导致日期在第二年被移动到6天。 DAY_OF_MONTH
- 返回指定LocalDate
的LocalDate。 月和年将不变。 如果每月的月份无效,那么会抛出一个DateTimeException
。 DAY_OF_YEAR
- 返回指定LocalDate
的LocalDate。 年将不变。 如果一年中的日期无效,则抛出DateTimeException
。 EPOCH_DAY
-返回LocalDate
与指定的划时代的日子。 这完全取代了日期,相当于ofEpochDay(long)
。 ALIGNED_WEEK_OF_MONTH
- 返回一个LocalDate
与指定对齐的月份。 统计周数将被计算在一个月的第一个星期从该月的第一天开始。 此调整将整周的日期移动到与指定周相匹配。 结果将与此日期相同。 这可能导致日期被移动到下个月。 ALIGNED_WEEK_OF_YEAR
- 返回一个LocalDate
,具有指定的对齐周年。 统计周数,使得某一年的第一周从那一年的第一天开始。 此调整将整周的日期移动到与指定周相匹配。 结果将与此日期相同。 这可能导致日期移至下一年。 MONTH_OF_YEAR
- 返回指定LocalDate
的LocalDate。 年将不变。 除非新的月份和年份都无效,否则日期也将保持不变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 PROLEPTIC_MONTH
- 返回一个LocalDate
与指定的幼儿期。 除非新月和年份无效,否则日期不变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 YEAR_OF_ERA
- 返回具有LocalDate
的LocalDate。 时代和月份将不变。 除非新的月份和年份都无效,否则日期也将保持不变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 YEAR
- 返回指定LocalDate
的LocalDate。 这个月不变。 除非新的月份和年份都无效,否则日期也将保持不变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 ERA
-返回LocalDate
与特定的时代。 年份和月份将保持不变。 除非新的月份和年份都无效,否则日期也将保持不变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 在所有情况下,如果新值超出该字段值的有效范围,那么将抛出一个DateTimeException
。
所有其他ChronoField
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是一个ChronoField
,则此方法的结果是通过调用获得TemporalField.adjustInto(Temporal, long)
传递this
作为参数。 在这种情况下,该字段决定是否以及如何调整即时。
此实例是不可变的,不受此方法调用的影响。
with
在接口
ChronoLocalDate
with
在接口
Temporal
field
- 要在结果中设置的字段,不为null
newValue
- 结果中字段的新值
LocalDate
基于
this
指定的字段设置,不为null
DateTimeException
- 如果该字段无法设置
UnsupportedTemporalTypeException
- 如果该字段不被支持
ArithmeticException
- 如果发生数字溢出
public LocalDate withYear(int year)
此实例是不可变的,不受此方法调用的影响。
year
- 设置结果的年份,从MIN_YEAR到MAX_YEAR
LocalDate
基于这个日期与请求的一年,不为null
DateTimeException
- 如果年值无效
public LocalDate withMonth(int month)
此实例是不可变的,不受此方法调用的影响。
month
- 从1月1日至12日(12月),确定结果的月份
LocalDate
基于此日期与请求的月份,不为null
DateTimeException
- 如果月份值无效
public LocalDate withDayOfMonth(int dayOfMonth)
此实例是不可变的,不受此方法调用的影响。
dayOfMonth
- 在1月28日至31日之间确定结果的月份
LocalDate
基于此日期与请求的日期,不为null
DateTimeException
- 如果月日的价值无效,或者月的日期在月中无效
public LocalDate withDayOfYear(int dayOfYear)
此实例是不可变的,不受此方法调用的影响。
dayOfYear
- 设定结果的日期,从1到365-366
LocalDate
基于这个日期与请求的一天,不为null
DateTimeException
- 如果日期年值无效,或者年的日期无效
public LocalDate plus(TemporalAmount amountToAdd)
这将返回一个LocalDate
,基于此,添加指定的数量。 量通常是Period
但也可以是任何其他类型的实现TemporalAmount
接口。
通过调用TemporalAmount.addTo(Temporal)
将计算委托给金额对象。 数量执行可以以任何方式自由实现添加,但通常会回调到plus(long, TemporalUnit)
。 请参阅金额执行的文档,以确定是否可以成功添加。
此实例是不可变的,不受此方法调用的影响。
plus
在接口
ChronoLocalDate
plus
中的
Temporal
amountToAdd
- 要添加的金额,不为null
LocalDate
基于此日期与添加,不为null
DateTimeException
- 如果不能添加
ArithmeticException
- 如果发生数字溢出
public LocalDate plus(long amountToAdd, TemporalUnit unit)
这返回一个LocalDate
,基于这一个,以添加的单位的数量。 如果不可能添加金额,因为单位不受支持或出于某种其他原因,则抛出异常。
在某些情况下,添加金额会导致结果日期无效。 例如,在1月31日之前添加一个月将导致2月31日。 在这种情况下,单位负责解决日期。 通常,它将选择先前的有效日期,这将是本例中最后一个有效的二月份。
如果该字段是ChronoUnit
,那么在这里实现添加。 支持的字段的行为如下:
DAYS
-返回LocalDate
添加了天的指定数目。 这相当于plusDays(long)
。 WEEKS
-返回LocalDate
添加了几个星期的指定数目。 这相当于plusWeeks(long)
并使用了7天的一周。 MONTHS
- 返回指定LocalDate
的LocalDate。 这相当于plusMonths(long)
。 除非新月和年份无效,否则月份将不会改变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 YEARS
-返回LocalDate
随着岁月的增加指定数量。 这相当于plusYears(long)
。 除非新月和年份无效,否则月份将不会改变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 DECADES
- 返回具有LocalDate
的几十年的LocalDate。 这相当于调用plusYears(long)
,数量乘以10.除非新月和年份无效,否则日期将不变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 CENTURIES
- 返回一个LocalDate
,附加了几百个世纪。 这相当于拨打plusYears(long)
,金额乘以100.除非新月和年份无效,否则日期将不变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 MILLENNIA
- 返回一个LocalDate
,附加了指定的几千年。 这相当于调用plusYears(long)
,数量乘以1,000。 除非新月和年份无效,否则月份将不会改变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 ERAS
- 返回一个LocalDate
了指定数量的时间的LocalDate。 只支持两个时间,所以数量必须是1,零或者减1。 如果金额不是零,那么这个年份就会改变,使得年龄不变。 除非新月和年份无效,否则月份将不会改变。 在这种情况下,每月的月份将被调整为新的月份和年份的最大有效值。 所有其他ChronoUnit
实例将抛出一个UnsupportedTemporalTypeException
。
如果该字段是不是一个ChronoUnit
,则此方法的结果是通过调用获得TemporalUnit.addTo(Temporal, long)
传递this
作为参数。 在这种情况下,单元确定是否以及如何执行添加。
此实例是不可变的,不受此方法调用的影响。
plus
在接口
ChronoLocalDate
plus
在界面
Temporal
amountToAdd
- 添加到结果中的单位数量可能为负数
unit
- 要添加的单位,不为null
LocalDate
基于此日期与指定的数量添加,不为null
DateTimeException
- 如果不能添加
UnsupportedTemporalTypeException
- 如果不支持本机
ArithmeticException
- 如果发生数字溢出
public LocalDate plusYears(long yearsToAdd)
LocalDate
的副本,其中指定的时间段以添加的年数表示。
该方法通过三个步骤将指定的数量添加到年份字段:
例如,2008-02-29(闰年)加上一年将导致无效日期2009-02-29(标准年)。 而不是返回无效结果,而是选择2009-02-28的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
yearsToAdd
- 多年来补充,可能是负数
LocalDate
基于这个日期与添加的年份,不为null
DateTimeException
- 如果结果超出支持的日期范围
public LocalDate plusMonths(long monthsToAdd)
LocalDate
的副本,其中指定的时间段以月为单位。
此方法通过三个步骤将指定的数量添加到月份字段:
例如,2007-03-31加上一个月将导致无效日期2007-04-31。 而不是返回无效结果,而是选择2007-04-30的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
monthsToAdd
- 补充的月份可能为负数
LocalDate
基于这个日期与添加的月份,不为null
DateTimeException
- 如果结果超出支持的日期范围
public LocalDate plusWeeks(long weeksToAdd)
LocalDate
的副本,并以指定的周期添加周数。
该方法将指定的数量以周为单位,根据需要增加月份和年份字段的日期字段,以确保结果保持有效。 如果超过最大/最小年份,结果将无效。
例如,2008-12-31加上一周将导致2009-01-07。
此实例是不可变的,不受此方法调用的影响。
weeksToAdd
- 要添加的星期可能为负数
LocalDate
基于这个日期与周添加,不为null
DateTimeException
- 如果结果超出支持的日期范围
public LocalDate plusDays(long daysToAdd)
LocalDate
的副本。
此方法将指定的金额添加到天数字段中,根据需要增加月份和年份字段,以确保结果保持有效。 如果超过最大/最小年份,结果将无效。
例如,2008-12-31加上一天会导致2009-01-01。
此实例是不可变的,不受此方法调用的影响。
daysToAdd
- 添加的日子可能为负数
LocalDate
基于此日期与添加的天数,不为null
DateTimeException
- 如果结果超出了支持的日期范围
public LocalDate minus(TemporalAmount amountToSubtract)
这将返回一个LocalDate
,基于此,减去指定的数量。 量通常是Period
但也可以是任何其他类型的实现TemporalAmount
接口。
通过调用TemporalAmount.subtractFrom(Temporal)
将计算委托给金额对象。 数量执行可以以任何方式实现减法,但是它通常会回调到minus(long, TemporalUnit)
。 请参阅数量实施的文档,以确定是否可以成功减去它们。
此实例是不可变的,不受此方法调用的影响。
minus
在接口
ChronoLocalDate
minus
在界面
Temporal
amountToSubtract
- 减去量,不为空
LocalDate
基于这个日期与减法,而不是null
DateTimeException
- 如果不能进行减法
ArithmeticException
- 如果发生数字溢出
public LocalDate minus(long amountToSubtract, TemporalUnit unit)
这将返回一个LocalDate
,基于这一个,减去的单位数量。 如果不可能减去金额,因为该单位不受支持或出于某种其他原因,则会抛出异常。
该方法相当于plus(long, TemporalUnit)
,数量被否定。 请参阅该方法,以了解如何添加,从而减去运算。
此实例是不可变的,不受此方法调用的影响。
minus
在界面
ChronoLocalDate
minus
中的
Temporal
amountToSubtract
- 从结果中减去单位的数量可能为负数
unit
- 减去量的单位,不为空
LocalDate
基于此日期指定的数量减去,不为null
DateTimeException
- 如果不能进行减法
UnsupportedTemporalTypeException
- 如果不支持本机
ArithmeticException
- 如果发生数字溢出
public LocalDate minusYears(long yearsToSubtract)
LocalDate
的副本,以减去的年份为单位。
该方法从三个步骤中减去指定的数量:
例如,2008-02-29(闰年)减去一年将导致无效日期2007-02-29(标准年)。 而不是返回无效结果,而是选择2007-02-28的该月份的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
yearsToSubtract
- 减去年份,可能为负数
LocalDate
基于这个日期减去,而不是null
DateTimeException
- 如果结果超出支持的日期范围
public LocalDate minusMonths(long monthsToSubtract)
LocalDate
的副本,指定的时间以月为单位减去。
该方法从以下三个步骤中减去月份字段中指定的数量:
例如,2007-03-31减去一个月将导致无效日期2007-02-31。 而不是返回无效结果,而是选择2007-02-28的该月份的最后一个有效日期。
此实例是不可变的,不受此方法调用的影响。
monthsToSubtract
- 减去数月,可能为负数
LocalDate
基于此日期与减去的月份,不为null
DateTimeException
- 如果结果超出支持的日期范围
public LocalDate minusWeeks(long weeksToSubtract)
LocalDate
的副本,其中指定的周期以周为单位减去。
该方法从必要的日期字段减去月和年字段中减去指定的数量,以确保结果保持有效。 如果超过最大/最小年份,结果将无效。
例如,2009-01-07减去一周将导致2008-12-31。
此实例是不可变的,不受此方法调用的影响。
weeksToSubtract
- 减去星期可能为负数
LocalDate
基于这个日期减去星期,而不是null
DateTimeException
- 如果结果超出了支持的日期范围
public LocalDate minusDays(long daysToSubtract)
LocalDate
的副本,并减去指定的天数。
该方法根据需要减去月份和年份字段的日期字段减去指定的金额,以确保结果保持有效。 如果超过最大/最小年份,结果将无效。
例如,2009-01-01减去一天会导致2008-12-31。
此实例是不可变的,不受此方法调用的影响。
daysToSubtract
- 减去的日子可能是负数
LocalDate
基于这个日期减去,而不是null
DateTimeException
- 如果结果超出支持的日期范围
public <R> R query(TemporalQuery<R> query)
这使用指定的查询策略对象查询此日期。 TemporalQuery
对象定义了用于获取结果的逻辑。 阅读查询的文档,以了解该方法的结果。
该方法的结果是通过以指定的查询this
作为参数调用TemporalQuery.queryFrom(TemporalAccessor)
方法获得的。
query
在界面
ChronoLocalDate
query
在界面
TemporalAccessor
R
- 结果的类型
query
- 要调用的查询,不为null
DateTimeException
- 如果无法查询(由查询定义)
ArithmeticException
- 如果发生数字溢出(由查询定义)
public Temporal adjustInto(Temporal temporal)
这返回与日期改变为与之相同的输入的相同可观察类型的时间对象。
调整相当于使用Temporal.with(TemporalField, long)
通过ChronoField.EPOCH_DAY
作为字段。
在大多数情况下,通过使用Temporal.with(TemporalAdjuster)
来更改调用模式:
// these two lines are equivalent, but the second approach is recommended
temporal = thisLocalDate.adjustInto(temporal);
temporal = temporal.with(thisLocalDate);
此实例是不可变的,不受此方法调用的影响。
adjustInto
在接口
ChronoLocalDate
adjustInto
在界面
TemporalAdjuster
temporal
- 要调整的目标对象,不为null
DateTimeException
- 如果不能进行调整
ArithmeticException
- 如果发生数字溢出
public long until(Temporal endExclusive, TemporalUnit unit)
这可以计算两个LocalDate
对象之间的时间量,单个TemporalUnit
。 起点和终点是this
和指定的日期。 如果结束在开始之前,结果将为负数。 所述Temporal
传递给此方法被转换为LocalDate
使用from(TemporalAccessor)
。 例如,可以使用startDate.until(endDate, DAYS)
两个日期之间的天数。
计算返回一个整数,表示两个日期之间的完整单位数。 例如,2012-06-15至2012-08-14之间的月数将只有一个月,因为是两个月的一天。
使用这种方法有两种等效的方法。 第一个是调用这个方法。 二是使用TemporalUnit.between(Temporal, Temporal)
:
// these two lines are equivalent
amount = start.until(end, MONTHS);
amount = MONTHS.between(start, end);
应该根据这种做法进行选择,使代码更易读。
ChronoUnit
以此方法计算 。 单位DAYS
, WEEKS
, MONTHS
, YEARS
, DECADES
, CENTURIES
, MILLENNIA
和ERAS
都支持。 其他ChronoUnit
值将抛出异常。
如果该单元不是ChronoUnit
,则此方法的结果是通过调用获得TemporalUnit.between(Temporal, Temporal)
传递this
作为第一个参数和转换后的输入时间作为第二个参数。
此实例是不可变的,不受此方法调用的影响。
until
在界面
ChronoLocalDate
until
在界面
Temporal
endExclusive
- 结束日期,排他,转换为
LocalDate
,不为空
unit
- 衡量金额的单位,不为空
DateTimeException
- 如果金额无法计算,或结束时间不能转换为
LocalDate
UnsupportedTemporalTypeException
- 如果不支持本机
ArithmeticException
- 如果发生数字溢出
public Period until(ChronoLocalDate endDateExclusive)
Period
。
这将计算两个日期之间的年份,月份和日期之间的期间。 起点和终点是this
和指定的日期。 如果结束在开始之前,结果将为负数。 每年,每月的负号将相同。
使用ISO日历系统进行计算。 如有必要,输入日期将转换为ISO。
包含开始日期,但结束日期不是。 通过删除完整的月份计算该期间,然后计算剩余天数,进行调整,以确保两者都具有相同的符号。 然后根据12个月的时间将月数标准化为数年和数月。 如果结束日期的月份大于或等于开始的日期,则认为一个月是完整的。 例如,从2010-01-15
到2011-03-18
是“1年,2个月和3天”。
使用这种方法有两种等效的方法。 第一个是调用这个方法。 二是使用Period.between(LocalDate, LocalDate)
:
// these two lines are equivalent
period = start.until(end);
period = Period.between(start, end);
应该根据这种做法进行选择,使代码更易读。
until
在界面
ChronoLocalDate
endDateExclusive
- 结束日期,排他,可能在任何年代,不为空
public String format(DateTimeFormatter formatter)
此日期将传递给格式化程序以生成一个字符串。
format
在界面
ChronoLocalDate
formatter
- 要使用的格式化程序,不为null
DateTimeException
- 打印时是否发生错误
public LocalDateTime atTime(LocalTime time)
LocalDateTime
。
这将返回一个LocalDateTime
从该日起在指定的时间形成的。 日期和时间的所有可能的组合都是有效的。
atTime
在接口
ChronoLocalDate
time
- 结合的时间,不为null
public LocalDateTime atTime(int hour, int minute)
LocalDateTime
。
这将从指定的时间和分钟返回一个LocalDateTime
日期形成的LocalDateTime。 秒和纳秒场将被设置为零。 单个时间字段必须在其有效范围内。 日期和时间的所有可能的组合都是有效的。
hour
- 使用时间,从0到23
minute
- 从0到59使用的小时
DateTimeException
- 如果任何字段的值超出范围
public LocalDateTime atTime(int hour, int minute, int second)
LocalDateTime
。
这将返回一个LocalDateTime
从该日期在指定的小时,分钟和秒来形成。 纳秒场将被设置为零。 单个时间字段必须在其有效范围内。 日期和时间的所有可能的组合都是有效的。
hour
- 从0到23的使用时间
minute
- 从0到59使用的小时
second
- 从0到59的秒表示
DateTimeException
- 如果任何字段的值超出范围
public LocalDateTime atTime(int hour, int minute, int second, int nanoOfSecond)
LocalDateTime
。
这将返回一个LocalDateTime
在指定的时,分,秒和纳秒从该日期形成。 单个时间字段必须在其有效范围内。 日期和时间的所有可能的组合都是有效的。
hour
- 从0到23的使用时间
minute
- 从0到59使用的小时
second
- 从0到59的秒表示
nanoOfSecond
- 表示从0到999,999,999的纳秒
DateTimeException
- 如果任何字段的值超出范围
public OffsetDateTime atTime(OffsetTime time)
OffsetDateTime
。
这将返回OffsetDateTime
从该日起在指定的时间形成的。 日期和时间的所有可能的组合都是有效的。
time
- 结合的时间,不为null
public LocalDateTime atStartOfDay()
LocalDateTime
。
在此日期开始之前的午夜00:00时,此功能将返回一个LocalDateTime
。
public ZonedDateTime atStartOfDay(ZoneId zone)
时区规则(如夏令时)意味着并非每个本地日期时间对指定的区域都有效,因此本地日期时间可能不是午夜。
在大多数情况下,本地日期时间只有一个有效的偏移量。 在重叠的情况下,存在两个有效的偏移量,并且使用较早的一个,对应于该日期的午夜的第一次出现。 在差距的情况下,分区的日期时间将代表差距之后的时刻。
如果区域ID是ZoneOffset
,那么结果总是有一个午夜的时间。
要在特定时区内转换到特定时间,请拨打atTime(LocalTime)
后跟LocalDateTime.atZone(ZoneId)
。
zone
- 要使用的区域ID,不为空
public long toEpochDay()
ChronoLocalDate
复制
Epoch Day count
是第0天为1970-01-01(ISO)的简单递增计数。 这个定义对于所有的年表都是一样的,可以进行转换。
此默认实现查询EPOCH_DAY
字段。
toEpochDay
在界面
ChronoLocalDate
public int compareTo(ChronoLocalDate other)
比较主要是从最早到最晚的日期。 这是“与equals一致”,被定义Comparable
。
如果所有被比较的日期都是LocalDate的LocalDate
,则比较将完全基于日期。 如果一些被比较的日期是不同的年表,那么年龄也被考虑,见ChronoLocalDate.compareTo(java.time.chrono.ChronoLocalDate)
。
compareTo
中的
Comparable<ChronoLocalDate>
compareTo
在界面
ChronoLocalDate
other
- 要比较的其他日期,不为空
public boolean isAfter(ChronoLocalDate other)
这将检查这个日期是否表示在另一个日期之后的本地时间线上的一个点。
LocalDate a = LocalDate.of(2012, 6, 30);
LocalDate b = LocalDate.of(2012, 7, 1);
a.isAfter(b) == false
a.isAfter(a) == false
b.isAfter(a) == true
此方法仅考虑两个日期在本地时间线上的位置。 它不考虑年表或日历系统。 这与compareTo(ChronoLocalDate)
中的比较不同 ,但是与ChronoLocalDate.timeLineOrder()
相同。
isAfter
在界面
ChronoLocalDate
other
- 要比较的其他日期,不为null
public boolean isBefore(ChronoLocalDate other)
这将检查该日期是否表示在另一个日期之前的本地时间线上的一个点。
LocalDate a = LocalDate.of(2012, 6, 30);
LocalDate b = LocalDate.of(2012, 7, 1);
a.isBefore(b) == true
a.isBefore(a) == false
b.isBefore(a) == false
此方法仅考虑两个日期在本地时间线上的位置。 它不考虑年表或日历系统。 这与compareTo(ChronoLocalDate)
中的比较不同 ,但是与ChronoLocalDate.timeLineOrder()
相同。
isBefore
中的
ChronoLocalDate
other
- 要比较的其他日期,不为null
public boolean isEqual(ChronoLocalDate other)
这将检查该日期是否表示与其他日期在当地时间线上的相同点。
LocalDate a = LocalDate.of(2012, 6, 30);
LocalDate b = LocalDate.of(2012, 7, 1);
a.isEqual(b) == false
a.isEqual(a) == true
b.isEqual(a) == false
此方法仅考虑两个日期在本地时间线上的位置。 它不考虑年表或日历系统。 这与compareTo(ChronoLocalDate)
中的比较不同,但是与ChronoLocalDate.timeLineOrder()
相同。
isEqual
在界面
ChronoLocalDate
other
- 要比较的其他日期,不为空
public boolean equals(Object obj)
比较这个LocalDate
与另一个确保日期是一样的。
只比较类型为LocalDate
对象,其他类型返回false。 要比较两个TemporalAccessor
实例的日期,包括两个TemporalAccessor
年代的日期,请使用ChronoField.EPOCH_DAY
作为比较。
equals
在界面
ChronoLocalDate
equals
在
Object
obj
- 要检查的对象,null返回false
Object.hashCode()
, HashMap
public int hashCode()
hashCode
在接口
ChronoLocalDate
hashCode
中的
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString()
String
,如2007-12-03
。
输出将采用ISO-8601格式uuuu-MM-dd
。
toString
在界面
ChronoLocalDate
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.