java中有哪些时间类型呢?

欢喜 Java经验 发布时间:2025-06-05 14:53:16 阅读数:9256 1
下文笔者讲述java中常见的时间类型,如下所示

java8之前的时间类

Java 8之前
  时间类(位于`java.util`包)
这些类已过时
 但仍可能在遗留系统中使用 
类名 描述
`Date` 表示特定的瞬间,
精确到毫秒。
已不推荐用于新代码
`Calendar` 抽象类,
用于日期和时间字段的操作,
如加减、格式化等
`SimpleDateFormat` 用于格式化和
解析日期字符串(非线程安全)

Java8之后引入的新时间API(`java.time`包)

从Java8开始
  引入新时间API(JSR-310)
   具有不可变性、线程安全、清晰的设计等优点 
常用类如下
类名 描述
`LocalDate` 只表示日期(年月日),
不包含时间和时区。
例如:2025-04-05
`LocalTime` 只表示时间(时分秒纳秒),
不包含日期和时区。
例如:14:30:45
`LocalDateTime` 表示日期和时间,
不包含时区。
例如:2025-04-05T14:30:45
`ZonedDateTime` 表示带时区的日期和时间。
适用于跨时区处理
`Instant` 表示时间戳(Unix 时间),
通常用于记录事件发生的时间点
`Duration` 表示两个时间点之间的持续时间(基于 `Instant`或`LocalTime`等)
`Period` 表示两个日期之间的“天数/月数/年数”差异(基于`LocalDate`)
`ZoneId` 时区标识符,用于表示不同地区的时区(如 `ZoneId.of("Asia/Shanghai")`)
`DateTimeFormatter` 线程安全的日期时间格式化工具,
替代 `SimpleDateFormat`

时间常用操作示例

// 获取当前日期
LocalDate today = LocalDate.now();

// 获取当前时间
LocalTime now = LocalTime.now();

// 获取当前日期时间
LocalDateTime current = LocalDateTime.now();

// 格式化日期时间
String formatted = current.format(DateTimeFormatter.ISO_DATE_TIME);

// 解析日期时间
LocalDateTime parsed = LocalDateTime.parse("2025-04-05T10:00:00");

// 加一天
LocalDate tomorrow = today.plusDays(1);

// 计算两个日期之间的天数
long daysBetween = ChronoUnit.DAYS.between(today, tomorrow);

各时间方法的对比

类型 是否带有时区 是否包含日期 是否包含时间 推荐使用场景
`LocalDate` 仅需日期时(如生日)
`LocalTime` 仅需时间时(如打卡时间)
`LocalDateTime` 不涉及时区的本地时间
`ZonedDateTime` 跨时区业务逻辑
`Instant` ✅(UTC) 日志、时间戳、系统内部使用
`Date / Calendar` - - - 遗留系统兼容,不推荐新项目使用
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202506/17491064298482.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者