前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LocalDate类常用解读【java】

LocalDate类常用解读【java】

原创
作者头像
一个风轻云淡
发布2024-05-03 00:25:11
1800
发布2024-05-03 00:25:11
举报
文章被收录于专栏:java学习javajava学习java

基本介绍

LocalDate 是一个不可变的日期-时间对象,表示一个日期,通常被视为年-月-日。还可以访问其他日期字段,例如一年中的某一天、星期几和一年中的一周。例如,值“2024 年 04 月 2 日”可以存储在 LocalDate.

此类不存储或表示时间或时区。相反,它是对日期的描述,用于生日。如果没有其他信息(如偏移量或时区),它就无法表示时间轴上的瞬间。

此类是不可变的,并且是线程安全的

常见方法

代码语言:java
复制
public static LocalDate now() {
    return now(Clock.systemDefaultZone());
}
  • 从默认时区的系统时钟获取当前日期。
  • 返回:使用系统时钟和默认时区的当前日期,而不是 null
代码语言:java
复制
public static LocalDate now(ZoneId zone) {
    return now(Clock.system(zone));
}
  • 从指定时区的系统时钟中获取当前日期。
  • 参数:zone – 要使用的区域 ID,而不是 null
  • 返回:使用系统时钟的当前日期,而不是 null
代码语言:java
复制
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
代码语言:java
复制
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 – 如果任何字段的值超出范围,或者月份中的某一天对于月份年份无效
代码语言:java
复制
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 – 如果任何字段的值超出范围,或者一年中的某一天对年份无效

代码语言:java
复制
public static LocalDate parse(CharSequence text) {
    return parse(text, DateTimeFormatter.ISO_LOCAL_DATE);
}
  • 从文本字符串(如 2024-12-03)中获取 的LocalDate实例。
  • 参数:text – 要解析的文本,例如“2007-12-03”,而不是 null
  • 返回:解析的本地日期,而不是 null
  • 抛出:DateTimeParseException – 如果无法解析文本
代码语言:java
复制
@Override 
public String format(DateTimeFormatter formatter) {
    Objects.requireNonNull(formatter, "formatter");
    return formatter.format(this);
}
  • 使用指定的格式化程序设置此日期的格式。此日期将传递给格式化程序以生成字符串。
  • 参数:格式化程序 – 要使用的格式化程序,而不是 null
  • 返回:格式化的日期字符串,而不是 null
  • 抛出:DateTimeException – 如果打印过程中发生错误

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本介绍
  • 常见方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档