Java 日期处理:库与工具概览

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java 日期处理:库与工具



日期和时间处理是任何应用程序中的关键任务之一。在 Java 中,标准类 java.util.Date 和 java.util.Calendar 长期以来因不便、可变性以及时区支持不佳而备受批评。然而,随着 Java 8 的发布,情况发生了根本性变化。在本文中,我们将介绍 Java 中用于日期处理的主要库和工具,它们将帮助您编写简洁可靠的代码。



1. 标准库 java.time (Java 8+)



从 Java 8 开始,开发人员可以使用基于 ISO-8601 标准的强大包 java.time。这是处理日期和时间的推荐方式。主要类包括:



  • LocalDate — 不含时间的日期(年、月、日)。
  • LocalTime — 不含日期的时间(时、分、秒、纳秒)。
  • LocalDateTime — 日期和时间的组合。
  • ZonedDateTime — 带时区的日期和时间。
  • Instant — UTC 时间戳(用于机器时间)。
  • Duration 和 Period — 用于处理时间间隔。


示例:创建和格式化日期



import java.time.LocalDate;import java.time.format.DateTimeFormatter;

public class DateExample { public static void main(String[] args) { // 当前日期 LocalDate today = LocalDate.now(); System.out.println("今天: " + today);

// 创建特定日期 LocalDate birthDate = LocalDate.of(1990, 5, 15); System.out.println("出生日期: " + birthDate);

// 格式化 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); String formatted = birthDate.format(formatter); System.out.println("格式化后的日期: " + formatted);

// 解析字符串 String dateStr = "2023-12-31"; LocalDate parsedDate = LocalDate.parse(dateStr); System.out.println("解析结果: " + parsedDate); }}


示例:计算日期差



import java.time.LocalDate;import java.time.Period;import java.time.temporal.ChronoUnit;

public class DateDifference { public static void main(String[] args) { LocalDate start = LocalDate.of(2020, 1, 1); LocalDate end = LocalDate.of(2024, 3, 15);

Period period = Period.between(start, end); System.out.println("相差: " + period.getYears() + " 年, " + period.getMonths() + " 月, " + period.getDays() + " 天");

long daysBetween = ChronoUnit.DAYS.between(start, end); System.out.println("总天数: " + daysBetween); }}


2. Joda-Time (适用于旧版 Java)



在 java.time 出现之前,Joda-Time 库是事实上的标准。它提供了方便的不可变类以及时区支持。如果您使用的是 Java 7 或更低版本,Joda-Time 是一个绝佳的选择。



依赖配置 (Maven):

<dependency>    <groupId>joda-time</groupId>    <artifactId>joda-time</artifactId>    <version>2.12.7</version></dependency>


示例:使用 Joda-Time



import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;

public class JodaExample { public static void main(String[] args) { // 当前日期和时间 DateTime now = new DateTime(); System.out.println("现在: " + now);

// 创建日期 DateTime specificDate =

推荐