杰瑞科技汇

Java String如何转DateTime?

Java 中 String 转 DateTime

在 Java 中,将 String 转换为日期时间(DateTime)通常需要使用 java.time 包中的类(Java 8 及以上版本)或 java.text.SimpleDateFormat(旧版 Java),以下是几种常见的方法:

使用 Java 8 的 java.time API(推荐)

使用 DateTimeFormatterLocalDateTime

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class StringToDateTime {
    public static void main(String[] args) {
        String dateTimeString = "2025-05-15 14:30:00";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
        System.out.println("转换后的DateTime: " + dateTime);
    }
}

使用 ZonedDateTime 处理时区

import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class StringToDateTime {
    public static void main(String[] args) {
        String dateTimeString = "2025-05-15T14:30:00+08:00";
        ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString);
        System.out.println("转换后的ZonedDateTime: " + dateTime);
    }
}

使用 java.text.SimpleDateFormat(旧版 Java)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class StringToDateTime {
    public static void main(String[] args) {
        String dateString = "2025-05-15";
        String dateTimeString = "2025-05-15 14:30:00";
        // 转换为Date
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = dateFormat.parse(dateString);
            Date dateTime = dateTimeFormat.parse(dateTimeString);
            System.out.println("转换后的Date(日期): " + date);
            System.out.println("转换后的Date(日期时间): " + dateTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

常见日期格式模式

符号 含义 示例
yyyy 2025
MM 05
dd 15
HH 时(24小时制) 14
mm 30
ss 00
a 上午/下午标记 PM
z 时区 CST

处理不同格式的字符串

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class StringToDateTime {
    public static void main(String[] args) {
        String[] dateFormats = {
            "2025/05/15",
            "15-05-2025",
            "May 15, 2025",
            "20250515",
            "2025-05-15 14:30"
        };
        DateTimeFormatter[] formatters = {
            DateTimeFormatter.ofPattern("yyyy/MM/dd"),
            DateTimeFormatter.ofPattern("dd-MM-yyyy"),
            DateTimeFormatter.ofPattern("MMMM d, yyyy"),
            DateTimeFormatter.ofPattern("yyyyMMdd"),
            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")
        };
        for (int i = 0; i < dateFormats.length; i++) {
            try {
                LocalDateTime dateTime = LocalDateTime.parse(dateFormats[i], formatters[i]);
                System.out.println("成功解析: " + dateFormats[i] + " -> " + dateTime);
            } catch (DateTimeParseException e) {
                System.out.println("无法解析: " + dateFormats[i]);
            }
        }
    }
}

注意事项

  1. 线程安全SimpleDateFormat 不是线程安全的,在多线程环境中应每次创建新实例或使用 ThreadLocalDateTimeFormatter 是线程安全的。

  2. 异常处理:解析时可能抛出 DateTimeParseExceptionParseException,需要妥善处理。

  3. 时区问题:处理跨时区数据时要注意时区转换。

  4. 格式匹配:确保字符串格式与指定的格式模式完全匹配。

  5. Java 版本:新项目建议使用 Java 8+ 的 java.time API,它更现代且功能更强大。

Java String如何转DateTime?-图1

Java String如何转DateTime?-图2

Java String如何转DateTime?-图3

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