杰瑞科技汇

Java DateTime类型如何正确使用与转换?

Java 日期时间类型详解

Java 提供了多种处理日期和时间的类,主要分为旧版 API 和新版 API。

Java DateTime类型如何正确使用与转换?-图1
(图片来源网络,侵删)

旧版日期时间 API (Java 8 之前)

  1. java.util.Date

    • 表示特定的时间点,精确到毫秒
    • 包含日期和时间信息
    • 大部分方法已废弃
  2. java.util.Calendar

    • 抽象类,提供了操作日期字段的方法
    • 常用实现类是 GregorianCalendar
    • 可以获取和设置年、月、日等字段
  3. java.text.SimpleDateFormat

    • 用于日期和字符串之间的格式化和解析
    • 线程不安全

新版日期时间 API (Java 8 及之后)

Java 8 引入了全新的日期时间 API (java.time 包),解决了旧版 API 的许多问题。

Java DateTime类型如何正确使用与转换?-图2
(图片来源网络,侵删)

核心类

  1. LocalDate

    • 表示不带时间的日期 (如 2025-05-15)
    • 不可变且线程安全
  2. LocalTime

    • 表示不带日期的时间 (如 15:30:45)
    • 不可变且线程安全
  3. LocalDateTime

    • 表示日期和时间 (如 2025-05-15T15:30:45)
    • 不可变且线程安全
  4. ZonedDateTime

    • 带时区的日期时间
    • 不可变且线程安全
  5. Instant

    • 表示时间线上的一个瞬时点
    • 通常用于机器时间交互
  6. Duration

    • 表示两个时间点之间的时间量
    • 精确到纳秒
  7. Period

    表示两个日期之间的天数、月数和年数

格式化类

  1. DateTimeFormatter
    • 替代了旧的 SimpleDateFormat
    • 线程安全
    • 提供预定义的格式和自定义格式

示例代码

import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateTimeExample {
    public static void main(String[] args) {
        // 获取当前日期时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println("当前日期时间: " + now);
        // 格式化日期时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = now.format(formatter);
        System.out.println("格式化后的日期时间: " + formattedDateTime);
        // 创建特定日期
        LocalDate date = LocalDate.of(2025, 5, 15);
        System.out.println("特定日期: " + date);
        // 时间计算
        LocalDate tomorrow = date.plusDays(1);
        System.out.println("明天: " + tomorrow);
        // 时区处理
        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
        System.out.println("上海时区时间: " + zonedDateTime);
    }
}

最佳实践

  1. 优先使用 Java 8 的 java.time API
  2. 避免使用 DateCalendar
  3. 使用 DateTimeFormatter 进行日期时间格式化
  4. 对于需要线程安全的场景,确保使用不可变的日期时间类

Java 8 的日期时间 API 设计更加清晰、不可变且线程安全,是处理日期时间操作的首选。

分享:
扫描分享到社交APP
上一篇
下一篇