杰瑞科技汇

Java日期如何转为yyyymmdd格式?

在 Java 中处理 yyyyMMdd 格式的日期,可以使用 java.time 包(Java 8+)或旧的 java.text.SimpleDateFormat(Java 7 及更早版本),以下是两种方法的详细说明和示例代码。

Java日期如何转为yyyymmdd格式?-图1
(图片来源网络,侵删)

方法 1:使用 java.time(推荐,Java 8+)

java.time 是 Java 8 引入的现代日期时间 API,线程安全且功能强大。

yyyyMMdd 字符串解析为 LocalDate

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateParseExample {
    public static void main(String[] args) {
        String dateString = "20251015"; // 格式:yyyyMMdd
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        LocalDate date = LocalDate.parse(dateString, formatter);
        System.out.println("解析后的日期: " + date); // 输出: 2025-10-15
    }
}

LocalDate 格式化为 yyyyMMdd 字符串

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateFormatExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now(); // 当前日期
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        String formattedDate = date.format(formatter);
        System.out.println("格式化后的日期: " + formattedDate); // 输出类似: 20251015
    }
}

方法 2:使用 SimpleDateFormat(Java 7 及更早版本)

SimpleDateFormat 是旧 API,但注意它不是线程安全的,应在多线程环境中谨慎使用。

yyyyMMdd 字符串解析为 Date

import java.text.SimpleDateFormat;
import java.util.Date;
public class OldDateParseExample {
    public static void main(String[] args) {
        String dateString = "20251015";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        try {
            Date date = sdf.parse(dateString);
            System.out.println("解析后的日期: " + date); // 输出类似: Mon Oct 15 00:00:00 CST 2025
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Date 格式化为 yyyyMMdd 字符串

import java.text.SimpleDateFormat;
import java.util.Date;
public class OldDateFormatExample {
    public static void main(String[] args) {
        Date date = new Date(); // 当前时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String formattedDate = sdf.format(date);
        System.out.println("格式化后的日期: " + formattedDate); // 输出类似: 20251015
    }
}

关键点说明

  1. 格式模式

    • yyyy:4位年份(如 2025)。
    • MM:2位月份(10 表示 10 月)。
    • dd:2位日期(15 表示 15 日)。
    • 注意区分 MM(月份)和 mm(分钟)。
  2. 时区问题

    Java日期如何转为yyyymmdd格式?-图2
    (图片来源网络,侵删)
    • LocalDate 不包含时区信息,适合仅处理日期的场景。
    • Date 对象包含时间戳,默认使用系统时区。
  3. 异常处理

    • 解析时如果字符串格式不匹配,会抛出 DateTimeParseExceptionjava.time)或 ParseExceptionSimpleDateFormat)。

示例:完整流程(字符串 ↔ 日期)

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateConversionExample {
    public static void main(String[] args) {
        // 字符串转日期
        String input = "20251015";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        LocalDate date = LocalDate.parse(input, formatter);
        // 日期操作(如加1天)
        LocalDate nextDay = date.plusDays(1);
        // 日期转字符串
        String output = nextDay.format(formatter);
        System.out.println("原始日期: " + input);
        System.out.println("加1天后: " + output); // 输出: 20251016
    }
}

  • 推荐使用 java.time(Java 8+),代码更简洁且线程安全。
  • 如果必须使用旧版 Java,确保 SimpleDateFormat 在单线程中运行或通过 synchronized 保护。
  • 始终验证输入字符串的格式是否符合预期,避免运行时异常。
Java日期如何转为yyyymmdd格式?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇