You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何将字符串日期转为dd-MM-yyyy格式的Date类型

问题解决:Date类型格式转换误区与正确实现

核心误区说明

  • Date类型本身不存储格式:java.util.Date本质是封装时间戳的对象,没有“格式”属性。直接打印Date对象时,调用的是默认toString()方法,会输出Wed Jun 07 00:00:00 IST 2023这类固定格式,和你期望的dd-MM-yyyy无关。
  • 你实际需要的是:先将输入的特定格式字符串解析为Date对象,再将该对象以dd-MM-yyyy格式输出为字符串——不存在“格式为dd-MM-yyyy的Date类型”这种说法。

正确实现步骤

  1. 按输入字符串的格式(Wed Jun 07 00:00:00 IST 2023对应的格式规则),将其解析为Date对象
  2. 使用格式化工具将Date对象转换为dd-MM-yyyy格式的字符串

修正后的代码示例

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class DateConversion {
    public static void main(String[] args) throws ParseException {
        // 输入的日期字符串
        String inputDateStr = "Wed Jun 07 00:00:00 IST 2023";
        
        // 1. 解析字符串为Date对象,格式需严格匹配输入结构
        SimpleDateFormat inputFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
        Date date = inputFormatter.parse(inputDateStr);
        
        // 2. 将Date对象格式化为dd-MM-yyyy格式的字符串
        SimpleDateFormat outputFormatter = new SimpleDateFormat("dd-MM-yyyy");
        String formattedDate = outputFormatter.format(date);
        
        // 输出结果
        System.out.println(formattedDate); // 输出:07-06-2023
    }
}

关键细节

  • 解析时的格式字符串"EEE MMM dd HH:mm:ss zzz yyyy"必须与输入字符串完全对应:
    • EEE:英文星期缩写(如Wed)
    • MMM:英文月份缩写(如Jun)
    • dd:两位日期
    • HH:mm:ss:时分秒
    • zzz:时区标识(如IST)
    • yyyy:四位年份
  • 显式设置Locale.ENGLISH是为了避免因系统语言环境不同导致的解析失败。

内容的提问来源于stack exchange,提问作者Ravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:07:37