Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LocalDate类常用解读【java】

LocalDate类常用解读【java】

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

基本介绍

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

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

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

常见方法

代码语言:java
AI代码解释
复制
public static LocalDate now() {
    return now(Clock.systemDefaultZone());
}
  • 从默认时区的系统时钟获取当前日期。
  • 返回:使用系统时钟和默认时区的当前日期,而不是 null
代码语言:java
AI代码解释
复制
public static LocalDate now(ZoneId zone) {
    return now(Clock.system(zone));
}
  • 从指定时区的系统时钟中获取当前日期。
  • 参数:zone – 要使用的区域 ID,而不是 null
  • 返回:使用系统时钟的当前日期,而不是 null
代码语言:java
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
@Override 
public String format(DateTimeFormatter formatter) {
    Objects.requireNonNull(formatter, "formatter");
    return formatter.format(this);
}
  • 使用指定的格式化程序设置此日期的格式。此日期将传递给格式化程序以生成字符串。
  • 参数:格式化程序 – 要使用的格式化程序,而不是 null
  • 返回:格式化的日期字符串,而不是 null
  • 抛出:DateTimeException – 如果打印过程中发生错误

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术经验|Java基础之LocalDate类
Java里的日期和时间格式化问题,在JDK8(Java SE Development Kit8,以下使用过程中,均称为JDK1.8或者JDK8)以前有很多问题,例如日期类并不提供国际化,没有时区支持,包分配的也比较混乱。所以在JDK8后进行了大改造,索性在rt.jar中新增了一个time包,这样我们就可以个性化设置日期时间的展示方式了。
六月暴雪飞梨花
2023/11/12
3020
技术经验|Java基础之LocalDate类
“干掉” Date,Java8 LocalDate 简直不能贼香,赶紧来艿一口~
伴随 lambda表达式、streams 以及一系列小优化,Java 8 推出了全新的日期时间API。
芋道源码
2020/06/04
2.2K0
Java中的时间和日期(三):java8中新的时间API介绍
由于java7及以前的版本对时间的处理都存在诸多的问题。自java8之后,引入了新的时间API,现在对这些新的API及其使用进行介绍。
冬天里的懒猫
2020/08/11
2.1K0
JSR310新日期API(二)-日期时间API
其他的类库还有Year、Month、DayOfWeek、MonthDay、YearMonth等。值得注意的是:JSR-310增加的日期API是严格区分年月日-时分秒格式的日期表示类,例如XXXDateTime一定表示为年月日时分秒(纳秒),XXXTime只能表示时分秒(纳秒),XXXDate只能表示年月日。
Throwable
2020/06/23
2.4K0
Java8时间方法LocalDate和LocalDateTime工具类
目的地-Destination
2023/10/12
4470
11.4 Java 日期和时间类
我们先来看一些基本概念,然后再介绍 Java 的日期和时间 API。关于日期和时间,有一些基本概念,包括时区、时刻、纪元时、年历等。
acc8226
2022/05/17
4.3K0
11.4 Java 日期和时间类
JAVA8实战 - 日期API
这一节我们来讲讲JAVA8的日期类,源代码的作者其实就是Joda-Time,所以可以看到很多代码的API和Joda类比较像。日期类一直是一个比较难用的东西,但是JAVA8给日期类提供了一套新的API让日期类更加好用。
阿东
2021/08/16
1.6K0
java中关于时间的用法示例
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API。Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的。看来Java已经意识到需要为时间及日期功能提供更好的支持了,这对已经习惯使用Joda时间日期库的社区而言也是件好事。关于这个新的时间日期库的最大的优点就在于它定义清楚了时间日期相关的一些概念,比方说,瞬时时间(Instant),持续时间(duration),日期(date),时间(time),时区(time-zone)以及时间段(Period)。同时它也借鉴了Joda库的一些优点,比如将人和机器对时间日期的理解区分开的。Java 8仍然延用了ISO的日历体系,并且与它的前辈们不同,java.time包中的类是不可变且线程安全的。新的时间及日期API位于java.time包中,下面是里面的一些关键的类:
用户7886150
2020/12/04
1.4K0
让你快速了解LocalDate类的基本用法
LocalDate是带有年,月,日的日期。为了构建LocalDate对象,可以使用now或of静态方法栗子如下:
爱敲代码的猫
2019/10/16
1.5K0
技术经验|Java基础之LocalDate类
Java里的日期和时间格式化问题,在JDK8(Java SE Development Kit8,以下使用过程中,均称为JDK1.8或者JDK8)以前有很多问题,例如日期类并不提供国际化,没有时区支持,包分配的也比较混乱。所以在JDK8后进行了大改造,索性在rt.jar中新增了一个time包,这样我们就可以个性化设置日期时间的展示方式了。
艾特
2023/12/29
1620
技术经验|Java基础之LocalDate类
Java 基础-LocalDate相关
那么在写具体的LocalDate前,我们先来看下为什么要在Java8中搞一套新的API呢,因为旧的Date类非常的难用,比如,其中的几个构造方法都被标注为@Deprecated,这里我总结了一些Date的一些问题
haoming1100
2018/10/11
1.4K0
Java 基础-LocalDate相关
Java8新特性之日期处理
伴随 lambda表达式、streams 以及一系列小优化,Java 8 推出了全新的日期时间API。
二哥聊运营工具
2021/12/17
1.3K0
Java8新特性之日期处理
Java 8 的时间日期 API
上一篇文章『Java 的时间日期 API』中,我们学习了由 Date、Calendar,DateFormat 等组成的「传统时间日期 API」,但是传统的处理接口设计并不是很友好,不易使用。终于,Java 8 借鉴第三方优秀开源库 Joda-time,重新设计了一套 API。 那么本篇文章就来简单学习一下新式的时间日期处理接口。 表示时刻的 Instant Instant 和 Date 一样,表示一个时间戳,用于描述一个时刻,只不过它较 Date 而言,可以描述更加精确的时刻。并且 Instant 是时区无
Single
2018/05/09
1.6K0
Java Review (二十一、基础类库----日期、时间类)
Java 原本提供了 Date 和 Calendar 用于处理日期、时间的类,包括创建日期 、 时间对象,获取系统当前日期、时间等操作 。 但 Date 不仅无法实现国际化 ,而且它对不同属性也使用了前后矛盾的偏移量 ,比如月份与小时都是从 0 开始的,月份中的天数则是从 1 开始的,年又是从 1900 开始的,而java.util.Calendar 则显得过于复杂 ,从下面介绍中会看到传统 Java 对日期、时间处理的不足 。 Java 8 吸取了 Joda-Time 库( 一个被广泛使用的日期、 时间库)的经验 , 提供了一套全新的日期时间库 。
三分恶
2020/07/16
8210
Java 8 日期时间 API
java 8 通过发布新的Date-Time API (JSR 310)来进一步加强对日期和时间的处理。
一滴水的眼泪
2020/09/21
1.1K0
Java8中关于日期和时间API的20个使用示例
随着lambda表达式、streams以及一系列小优化,Java8推出了全新的日期时间API,在一下的指南中我们将通过一些简单的示例来学习如何使用新API。Java处理日期、日历和时间的方式一直为社区所诟病,将java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。Java也意识到需要一个更好的API来满足社区中已经习惯了使用JodaTime API的人们。全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、期间(duration)、日期、时间、时区和周期。同时继承了Joda库按人类语言和计算机各自解析的时间处理方式。不同于老版本,新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。下面是新版API中java.time包里的一些关键类:
Abalone
2022/07/14
2.8K0
java.time常用方法汇总
java.timeAPI 是从 Java 8 开始引入的一套强大的时间日期处理库,旨在替代老旧的 java.util.Date 和 java.util.Calendar。该 API 以更简洁、强大和灵活的方式处理日期、时间、时区以及时间间隔,适合各种全球化和时间计算的需求。
每周聚焦
2025/02/13
930
java.time常用方法汇总
18 个 Java8 日期处理的实践,太有用了!
Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。
xcbeyond
2021/03/16
8780
Java中String、Date、LocalDate互相转换工具类
该工具类实现的功能有: 1.String日期转Date 2.Date日期转String 3.Date日期转LocaDate 4.LocalDate转Date 5.获取当前日期(String) 6.获取当前日期(Date) 7.获取两个日期之间的间隔 8.获取日期的星期 9.比较两个日期的大小 10.日期转为时间戳 11.时间戳转日期 12.去除日期连接符号(“-”),转为long 13.日期加上相应的天数 代码如下所示: import java.tex
林老师带你学编程
2022/05/06
2.6K0
java.time API
Java 8 推出了全新的日期时间API,在教程中我们将通过一些简单的实例来学习如何使用新API。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。
HLee
2021/07/26
1.2K0
java.time API
相关推荐
技术经验|Java基础之LocalDate类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档