Java 中的日期和时间数据类型151


Java 提供了广泛的类和接口来表示和操作日期和时间,这些类和接口构成了 Java 日期和时间 (JSR-310) API。

LocalDate

LocalDate 表示在 ISO-8601 纪元中的无时区的日期。它包含年、月和日信息,但没有时区或时间信息。
import ;
LocalDate today = ();
(today); // 输出:2023-03-08

LocalTime

LocalTime 表示一天中的无时区的时刻。它包含小时、分钟、秒和纳秒信息,但没有时区或日期信息。
import ;
LocalTime now = ();
(now); // 输出:14:32:15.678

LocalDateTime

LocalDateTime 表示在 ISO-8601 纪元中的无时区的日期和时间。它结合了 LocalDate 和 LocalTime,包含年、月、日、小时、分钟、秒和纳秒信息。
import ;
LocalDateTime now = ();
(now); // 输出:2023-03-08T14:32:15.678

ZonedDateTime

ZonedDateTime 表示带时区的日期和时间。它包含 LocalDateTime 的所有信息,并增加了时区信息,例如 UTC+01:00。
import ;
ZonedDateTime now = ();
(now); // 输出:2023-03-08T14:32:15.678+01:00[Europe/Paris]

Instant

Instant 表示自 Unix 纪元(1970 年 1 月 1 日午夜 UTC)以来的秒数和纳秒数。它是一个无时区的日期和时间表示,通常用于跟踪事件的时间戳。
import ;
Instant now = ();
(now); // 输出:1678329535.678123123

Duration

Duration 表示两个 Instant 或 LocalDateTime 之间的持续时间。它以纳秒为单位存储持续时间,并可以以各种单位(如天、小时和分钟)表示。
import ;
Duration duration = (now, ());
(duration); // 输出:PT0.000000012S

Period

Period 表示两个 LocalDate 之间的持续时间。它以年、月和日为单位存储持续时间,并可以以各种单位(如月和天)表示。
import ;
Period period = (today, ());
(period); // 输出:P0D

格式化和解析

Java 提供了多种方法来格式化和解析日期和时间值。
DateTimeFormatter 类可用于创建自定义格式化程序和解析器。
类可用于格式化和解析日期和时间,但它不那么灵活。

转换

Java 中的日期和时间类型可以相互转换。例如:
import ;
import ;
ZonedDateTime zonedDateTime = ();
LocalDate localDate = ();
LocalTime localTime = ();
LocalDateTime localDateTime = ();
Instant instant = ();

最佳实践

使用 Java 日期和时间 API 时,以下是一些最佳实践:
使用无时区的类型(例如 LocalDate 和 LocalTime)来存储日期和时间。
使用带时区的类型(例如 ZonedDateTime)来表示时区信息。
使用 DateTimeFormatter 来格式化和解析日期和时间值。
使用 Duration 和 Period 来表示持续时间。

通过遵循这些最佳实践,您可以更有效、更准确地处理 Java 中的日期和时间。

2024-12-10


上一篇:Java 中常量数组的定义和使用

下一篇:Java数组赋值 0