杰瑞科技汇

java string 转 日期

Java 字符串转日期

在 Java 中,将字符串转换为日期对象可以使用 java.time 包中的类(Java 8+)或旧的 java.text.SimpleDateFormat 类,以下是几种常见的方法:

java string 转 日期-图1
(图片来源网络,侵删)

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

LocalDate 示例(仅日期)

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class StringToDate {
    public static void main(String[] args) {
        String dateString = "2025-05-15";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate date = LocalDate.parse(dateString, formatter);
        System.out.println("转换后的日期: " + date);
    }
}

LocalDateTime 示例(日期和时间)

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class StringToDate {
    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);
    }
}

ZonedDateTime 示例(带时区)

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class StringToDate {
    public static void main(String[] args) {
        String zonedDateTimeString = "2025-05-15T14:30:00+08:00";
        DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, formatter);
        System.out.println("转换后的带时区日期时间: " + zonedDateTime);
    }
}

使用旧的 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";
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date date = formatter.parse(dateString);
            System.out.println("转换后的日期: " + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

处理不同的日期格式

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class StringToDate {
    public static void main(String[] args) {
        String[] dateFormats = {
            "yyyy-MM-dd",
            "MM/dd/yyyy",
            "dd-MM-yyyy",
            "yyyyMMdd"
        };
        String dateString = "15052025"; // 15-May-2025
        for (String format : dateFormats) {
            try {
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
                LocalDate date = LocalDate.parse(dateString, formatter);
                System.out.println("格式 '" + format + "' 匹配成功: " + date);
                break;
            } catch (DateTimeParseException e) {
                // 继续尝试下一种格式
            }
        }
    }
}

自定义格式转换

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class StringToDate {
    public static void main(String[] args) {
        String inputDate = "15-May-2025";
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
        LocalDate date = LocalDate.parse(inputDate, inputFormatter);
        String formattedDate = date.format(outputFormatter);
        System.out.println("原始日期: " + inputDate);
        System.out.println("转换后日期: " + formattedDate);
    }
}

注意事项

  1. 线程安全java.time 包中的类是线程安全的,而 SimpleDateFormat 不是
  2. 异常处理:解析日期时可能会抛出异常,需要适当处理
  3. 时区问题:处理带时区的日期时要注意时区转换
  4. 格式匹配:确保字符串格式与指定的格式模式完全匹配

对于新项目,建议使用 Java 8 引入的 java.time 包,它提供了更强大、更易用的日期时间 API。

java string 转 日期-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇