基本介绍
LocalDate 是一个不可变的日期-时间对象,表示一个日期,通常被视为年-月-日。还可以访问其他日期字段,例如一年中的某一天、星期几和一年中的一周。例如,值“2024 年 04 月 2 日”可以存储在 LocalDate.
此类不存储或表示时间或时区。相反,它是对日期的描述,用于生日。如果没有其他信息(如偏移量或时区),它就无法表示时间轴上的瞬间。
此类是不可变的,并且是线程安全的
常见方法
代码语言:java复制public static LocalDate now() {
return now(Clock.systemDefaultZone());
}
- 从默认时区的系统时钟获取当前日期。
- 返回:使用系统时钟和默认时区的当前日期,而不是 null
public static LocalDate now(ZoneId zone) {
return now(Clock.system(zone));
}
- 从指定时区的系统时钟中获取当前日期。
- 参数:zone – 要使用的区域 ID,而不是 null
- 返回:使用系统时钟的当前日期,而不是 null
public static LocalDate now(Clock clock) {
Objects.requireNonNull(clock, "clock");
// inline to avoid creating object and Instant checks
final Instant now = clock.instant(); // called once
ZoneOffset offset = clock.getZone().getRules().getOffset(now);
long epochSec = now.getEpochSecond() offset.getTotalSeconds(); // overflow caught later
long epochDay = Math.floorDiv(epochSec, SECONDS_PER_DAY);
return LocalDate.ofEpochDay(epochDay);
}
- 从指定的时钟获取当前日期。
- 参数:clock – 要使用的时钟,而不是空时钟
- 返回:当前日期,非 null
public static LocalDate of(int year, Month month, int dayOfMonth) {
YEAR.checkValidValue(year);
Objects.requireNonNull(month, "month");
DAY_OF_MONTH.checkValidValue(dayOfMonth);
return create(year, month.getValue(), dayOfMonth);
}
从年、月和日获取实例 LocalDate 。这将返回具有指定年份、月份和月份中的日期的 a LocalDate 。该日期必须对年份和月份有效,否则将引发异常。
- 参数:
year – 代表的年份,从 MIN_YEAR 年到 MAX_YEAR
month – 要表示的年份月份,而不是 null
dayOfMonth – 要表示的月份中的日期,从 1 到 31
- 返回:本地日期,非 null
- 抛出:DateTimeException – 如果任何字段的值超出范围,或者月份中的某一天对于月份年份无效
public static LocalDate ofYearDay(int year, int dayOfYear) {
YEAR.checkValidValue(year);
DAY_OF_YEAR.checkValidValue(dayOfYear);
boolean leap = IsoChronology.INSTANCE.isLeapYear(year);
if (dayOfYear == 366 && leap == false) {
throw new DateTimeException("Invalid date 'DayOfYear 366' as '" year "' is not a leap year");
}
Month moy = Month.of((dayOfYear - 1) / 31 1);
int monthEnd = moy.firstDayOfYear(leap) moy.length(leap) - 1;
if (dayOfYear > monthEnd) {
moy = moy.plus(1);
}
int dom = dayOfYear - moy.firstDayOfYear(leap) 1;
return new LocalDate(year, moy.getValue(), dom);
}
- 从一年和一年中的某一天获取实例 LocalDate 。
参数:
year – 代表的年份,从 MIN_YEAR 年到 MAX_YEAR
dayOfYear – 要表示的年份,从 1 到 366
- 返回:本地日期,非 null
- 抛出:DateTimeException – 如果任何字段的值超出范围,或者一年中的某一天对年份无效
public static LocalDate parse(CharSequence text) {
return parse(text, DateTimeFormatter.ISO_LOCAL_DATE);
}
- 从文本字符串(如 2024-12-03)中获取 的LocalDate实例。
- 参数:text – 要解析的文本,例如“2007-12-03”,而不是 null
- 返回:解析的本地日期,而不是 null
- 抛出:DateTimeParseException – 如果无法解析文本
@Override
public String format(DateTimeFormatter formatter) {
Objects.requireNonNull(formatter, "formatter");
return formatter.format(this);
}
- 使用指定的格式化程序设置此日期的格式。此日期将传递给格式化程序以生成字符串。
- 参数:格式化程序 – 要使用的格式化程序,而不是 null
- 返回:格式化的日期字符串,而不是 null
- 抛出:DateTimeException – 如果打印过程中发生错误