Java日期和时间API:处理日期、时间和持续时间

作者:API传播员 · 2025-12-14 · 阅读时间:4分钟

在本教程中,我们将深入探讨 Java 日期和时间 API,它为处理日期、时间以及持续时间提供了一套强大的类和方法。这一 API 于 Java 8 中引入,与旧的 java.util.Datejava.util.Calendar 类相比,它提供了一种更健壮、更直观的方式来操作日期和时间。Java 日期和时间 API 是围绕 java.time 包构建的,该包包含用于表示日期、时间、持续时间和周期的多种类。


Java Time API 概述

Java 时间 API 可以分为以下三大类:

  • 即时和持续时间:这些类用于表示一个时间点(Instant)以及两个时间点之间的持续时间(Duration)。
  • 本地日期和时间:这些类表示不包含时区信息的日期(LocalDate)、时间(LocalTime)以及日期时间组合(LocalDateTime)。
  • 分区日期和时间:这些类表示包含时区信息的日期、时间以及日期时间组合(如 ZonedDateTimeOffsetDateTimeOffsetTime)。

使用即时和持续时间

即时(Instant)

Instant 类表示一个时间点,通常以 UTC 时间为基准。您可以使用 now() 方法获取当前时刻:

import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        Instant now = Instant.now();
        System.out.println("当前即时:" + now);
    }
}

持续时间(Duration)

Duration 类表示两个时间点之间的时间量。可以通过 between() 方法来创建一个持续时间实例:

import java.time.Duration;
import java.time.Instant;

public class DurationExample {
    public static void main(String[] args) {
        Instant start = Instant.now();
        // 执行一些操作
        Instant end = Instant.now();
        Duration duration = Duration.between(start, end);
        System.out.println("操作持续时间:" + duration.toMillis() + " 毫秒");
    }
}

使用本地日期和时间

本地日期(LocalDate)

LocalDate 类表示不包含时间或时区信息的日期。可以通过 of()now() 方法创建一个 LocalDate 实例:

import java.time.LocalDate;

public class LocalDateExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate specificDate = LocalDate.of(2021, 12, 31);
        System.out.println("今天的日期:" + today);
        System.out.println("指定日期:" + specificDate);
    }
}

本地时间(LocalTime)

LocalTime 类表示不包含日期或时区信息的时间。与 LocalDate 类似,可以通过 of()now() 方法创建一个 LocalTime 实例:

import java.time.LocalTime;

public class LocalTimeExample {
    public static void main(String[] args) {
        LocalTime now = LocalTime.now();
        LocalTime specificTime = LocalTime.of(23, 59, 59);
        System.out.println("当前时间:" + now);
        System.out.println("指定时间:" + specificTime);
    }
}

本地日期时间(LocalDateTime)

LocalDateTime 类将日期和时间组合到一个对象中。以下是一个示例:

import java.time.LocalDateTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime specificDateTime = LocalDateTime.of(2021, 12, 31, 23, 59, 59);
        System.out.println("当前日期和时间:" + now);
        System.out.println("指定日期和时间:" + specificDateTime);
    }
}

使用分区日期和时间

ZonedDateTimeOffsetDateTimeOffsetTime 类用于表示包含时区信息的日期和时间。以下是 ZonedDateTime 的示例:

import java.time.ZoneId;
import java.time.ZonedDateTime;

public class ZonedDateTimeExample {
    public static void main(String[] args) {
        ZonedDateTime now = ZonedDateTime.now();
        ZonedDateTime specificZonedDateTime = ZonedDateTime.of(
            2021, 12, 31, 23, 59, 59, 0, ZoneId.of("America/New_York")
        );
        System.out.println("当前分区日期和时间:" + now);
        System.out.println("指定分区日期和时间:" + specificZonedDateTime);
    }
}

结论

Java 日期和时间 API 提供了一套全面的类和方法,用于处理日期、时间以及持续时间。通过掌握这些工具,开发人员可以更高效地处理与时间相关的任务。无论是构建复杂的时间逻辑还是处理跨时区的应用程序,这些类都能提供极大的帮助。对于任何 Java 开发者来说,深入了解这一 API 都是必不可少的技能。

原文链接: https://reintech.io/blog/java-date-and-time-api