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

简介: 【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,可以编写出更稳定、更易读的代码。在实际开发中,结合具体需求和场景,选择合适的日期时间类,将使你的代码更加准确和高效。

目录
相关文章
|
4月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
246 1
|
5月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
5月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
331 100
|
5月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
351 101
|
5月前
|
并行计算 Java 大数据
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
306 101
|
5月前
|
安全 Java API
使用 Java 构建强大的 REST API 的四个基本技巧
本文结合探险领域案例,分享Java构建REST API的四大核心策略:统一资源命名、版本控制与自动化文档、安全防护及标准化异常处理,助力开发者打造易用、可维护、安全可靠的稳健API服务。
280 2
|
5月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
124 0
Java Stream API 的强大功能
java中的日期时间类
java中获取日期时间,util包中的Date类,直接new一个对象打印他就可以,但是格式是外国的,对于我们来说肯定是希望有些格式的。
|
存储 安全 Java
11.4 Java 日期和时间类
我们先来看一些基本概念,然后再介绍 Java 的日期和时间 API。关于日期和时间,有一些基本概念,包括时区、时刻、纪元时、年历等。 全球一共有 24 个时区,英国格林尼治是 0 时区,北京是东八区,也就是说格林尼治凌晨 1 点,北京是早上 9 点。0 时区的时间也称为 GMT+0 时间,GMT 是格林尼治标准时间,北京的时间就是 GMT+8:00。 所有计算机系统内部都用一个整数表示时刻,这个整数是距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。为什么要用这个时间呢?更多的是历史原因。 格林尼治标准时间 1970年1月1日0时0分0秒也被称为 Epoch Time(纪元时)
501 0
|
存储 Java API
Java Review (二十一、基础类库----日期、时间类)
Java Review (二十一、基础类库----日期、时间类)
218 0