杰瑞科技汇

Java String如何转Date?

Java String 转 Date

在 Java 中,将 String 转换为 Date 有多种方法,具体取决于你使用的 Java 版本和日期格式要求,以下是几种常见的实现方式:

Java String如何转Date?-图1
(图片来源网络,侵删)

使用 SimpleDateFormat (Java 8 之前)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDate {
    public static void main(String[] args) {
        String dateString = "2025-05-15 14:30:00";
        // 定义日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            // 解析字符串为Date对象
            Date date = sdf.parse(dateString);
            System.out.println("转换后的Date: " + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

使用 Java 8 的 DateTimeFormatter (推荐)

Java 8 引入了新的日期时间 API,推荐使用 java.time 包中的类:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class StringToDateJava8 {
    public static void main(String[] args) {
        String dateString = "2025-05-15 14:30:00";
        // 定义日期格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 解析为LocalDateTime
        LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter);
        System.out.println("转换后的LocalDateTime: " + dateTime);
        // 如果需要转换为java.util.Date
        Date date = java.sql.Timestamp.valueOf(dateTime);
        System.out.println("转换后的Date: " + date);
    }
}

使用 java.sql.Date

import java.sql.Date;
public class StringToSqlDate {
    public static void main(String[] args) {
        String dateString = "2025-05-15";
        // 直接转换为java.sql.Date
        Date sqlDate = Date.valueOf(dateString);
        System.out.println("转换后的java.sql.Date: " + sqlDate);
    }
}

处理不同时区

import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class StringToDateWithTimeZone {
    public static void main(String[] args) {
        String dateString = "2025-05-15T14:30:00+08:00";
        DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateString, formatter);
        System.out.println("转换后的ZonedDateTime: " + zonedDateTime);
        // 转换为Instant
        System.out.println("转换为Instant: " + zonedDateTime.toInstant());
    }
}

注意事项

  1. 线程安全SimpleDateFormat 不是线程安全的,在多线程环境中应该每次创建新实例或使用 ThreadLocal
  2. 格式匹配:确保字符串格式与指定的格式完全匹配,否则会抛出异常。
  3. Java 8+ 推荐:尽可能使用 Java 8 的 java.time API,它更现代、更易用且线程安全。
  4. 时区处理:处理日期时间时要注意时区问题,特别是涉及跨时区应用时。

常见格式示例

字符串格式 格式模式
2025-05-15 yyyy-MM-dd
15/05/2025 dd/MM/yyyy
20250515 yyyyMMdd
2025-05-15 14:30:00 yyyy-MM-dd HH:mm:ss
2025-05-15T14:30:00 yyyy-MM-dd'T'HH:mm:ss
2025-05-15 14:30:00+08:00 yyyy-MM-dd HH:mm:ssXXX

选择哪种方法取决于你的具体需求和项目使用的 Java 版本,对于新项目,强烈推荐使用 Java 8 的 java.time API。

Java String如何转Date?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇