Java一分钟之-Java日期与时间API:LocalDate, LocalDateTime

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 【5月更文挑战第13天】Java 8引入`java.time`包,改进日期时间API。`LocalDate`代表日期,`LocalDateTime`包含日期和时间。本文概述两者的基本用法、常见问题及解决策略。创建日期时间使用`of()`和`parse()`,操作日期时间有`plusDays()`、`minusMonths()`等。注意点包括:设置正确的`DateTimeFormatter`,考虑闰年影响,以及在需要时区信息时使用`ZonedDateTime`。正确使用这些类能提升代码质量。

自Java 8开始,日期和时间API进行了重大改进,引入了java.time包,其中LocalDateLocalDateTime是两个重要的类,用于处理日期和日期时间。本文将介绍这两个类的基本用法,常见问题,易错点及如何避免,同时附带代码示例。
image.png

1. LocalDate与LocalDateTime简介

  • LocalDate:表示日期,不包含时间信息,如“2022-03-15”。
  • LocalDateTime:表示日期和时间,如“2022-03-15T13:45:30”。
LocalDate date = LocalDate.of(2022, 3, 15);
LocalDateTime dateTime = LocalDateTime.of(2022, 3, 15, 13, 45, 30);

2. 常见问题与使用技巧

2.1 创建与解析日期

  • 使用of()工厂方法创建日期和日期时间。
  • 使用parse()方法解析字符串。
String dateString = "2022-03-15";
LocalDate parsedDate = LocalDate.parse(dateString, DateTimeFormatter.ISO_DATE);

String dateTimeString = "2022-03-15T13:45:30";
LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME);

2.2 操作日期与时间

  • 添加/减去天数、月份、年份等:plusDays()minusMonths()等。
  • 获取部分字段:getDayOfMonth()getYear()等。
LocalDate tomorrow = date.plusDays(1);
int year = date.getYear();
int dayOfMonth = dateTime.getDayOfMonth();

3. 易错点与避免方法

3.1 忘记设置日期格式

在解析日期字符串时,如果没有指定正确的DateTimeFormatter,会抛出DateTimeParseException

// 错误示例
LocalDate wrongDate = LocalDate.parse("15-03-2022"); // 抛出 DateTimeParseException

// 正确示例
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate correctDate = LocalDate.parse("15-03-2022", formatter);

3.2 日期时间操作的闰年问题

在涉及到月份加减时,要考虑闰年的影响。例如,2月29日加1个月不等于3月29日,而是4月1日。

LocalDate feb29 = LocalDate.of(2020, 2, 29);
LocalDate march31 = feb29.plusMonths(1); // 结果是 2020-04-01

3.3 忽略时区信息

LocalDateLocalDateTime不包含时区信息,如果需要处理时区,请使用ZonedDateTime

LocalDateTime localTime = LocalDateTime.now();
ZonedDateTime zonedTime = localTime.atZone(ZoneId.of("Asia/Shanghai"));

4. 结语

Java 8的日期和时间API简化了日期和时间的处理,但同时也需要我们注意一些细节,如日期格式、闰年问题和时区处理。通过合理使用LocalDateLocalDateTime,可以编写出更稳定、更易读的代码。在实际开发中,结合具体需求和场景,选择合适的日期时间类,将使你的代码更加准确和高效。

目录
相关文章
|
5天前
|
Java API 调度
Java 日期与时间处理:精准掌控时间流转
Java 8引入了全新的日期和时间API,解决了旧版`java.util.Date`和`Calendar`类设计不佳、操作繁琐的问题。新API包括`LocalDate`、`LocalTime`和`LocalDateTime`类,操作简洁直观,符合日常思维习惯。同时提供了`Period`和`Duration`处理时间间隔,以及`DateTimeFormatter`进行格式化输出。这些改进使开发者能更高效、准确地处理日期和时间,极大提升了开发效率与代码质量。 (239字符)
24 5
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
62 26
|
2月前
|
安全 Java API
告别SimpleDateFormat:Java 8日期时间API的最佳实践
在Java开发中,处理日期和时间是一个基本而重要的任务。传统的`SimpleDateFormat`类因其简单易用而被广泛采用,但它存在一些潜在的问题,尤其是在多线程环境下。本文将探讨`SimpleDateFormat`的局限性,并介绍Java 8引入的新的日期时间API,以及如何使用这些新工具来避免潜在的风险。
42 5
|
3月前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
59 14
|
Java API
Java 8 Stream API详解
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/47038607 Java ...
1036 0
|
2天前
|
JSON API 数据格式
京东商品SKU价格接口(Jd.item_get)丨京东API接口指南
京东商品SKU价格接口(Jd.item_get)是京东开放平台提供的API,用于获取商品详细信息及价格。开发者需先注册账号、申请权限并获取密钥,随后通过HTTP请求调用API,传入商品ID等参数,返回JSON格式的商品信息,包括价格、原价等。接口支持GET/POST方式,适用于Python等语言的开发环境。
31 11
|
26天前
|
人工智能 自然语言处理 API
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
谷歌推出的Multimodal Live API是一个支持多模态交互、低延迟实时互动的AI接口,能够处理文本、音频和视频输入,提供自然流畅的对话体验,适用于多种应用场景。
73 3
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
|
13天前
|
JSON 安全 API
淘宝商品详情API接口(item get pro接口概述)
淘宝商品详情API接口旨在帮助开发者获取淘宝商品的详细信息,包括商品标题、描述、价格、库存、销量、评价等。这些信息对于电商企业而言具有极高的价值,可用于商品信息展示、市场分析、价格比较等多种应用场景。
|
21天前
|
前端开发 API 数据库
Next 编写接口api
Next 编写接口api
|
27天前
|
XML JSON 缓存
阿里巴巴商品详情数据接口(alibaba.item_get) 丨阿里巴巴 API 实时接口指南
阿里巴巴商品详情数据接口(alibaba.item_get)允许商家通过API获取商品的详细信息,包括标题、描述、价格、销量、评价等。主要参数为商品ID(num_iid),支持多种返回数据格式,如json、xml等,便于开发者根据需求选择。使用前需注册并获得App Key与App Secret,注意遵守使用规范。
下一篇
开通oss服务