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

Java中如何返回指定格式日期?SimpleDateFormat使用问题求助

问题根源你得搞清楚!

你现在遇到的问题,核心是Date对象本身不存储任何日期格式——它本质上就是个时间戳,记录的是从1970年1月1日00:00:00 UTC到目标时间的毫秒数。当你打印它或者直接转字符串时,它会调用自带的toString()方法,默认输出就是Wed Jul 03 00:00:00 IST 2019这种格式,和你用SimpleDateFormat指定的格式半毛钱关系都没有。

而且你的方法还搞反了操作:parse()是把符合格式的字符串转成Date对象,而你想要的是把日期转成指定格式的字符串,这得用format()方法才行!

给你两种解决方案

方案一:修正你的SimpleDateFormat代码

如果你还想用旧的API,那得把方法返回类型改成String,然后用format()方法输出指定格式:

private static final String DOB_FORMAT = "yyyy-MM-dd";

public static String convertStringToFormattedDateString(String date) {
    if (date != null) {
        SimpleDateFormat sdf = new SimpleDateFormat(DOB_FORMAT, Locale.ENGLISH);
        try {
            // 先把字符串解析成Date对象
            Date parsedDate = sdf.parse(date);
            // 再把Date对象格式化成你要的yyyy-MM-dd字符串
            String formattedDate = sdf.format(parsedDate);
            LOG.info("Formatted date: " + formattedDate);
            return formattedDate;
        } catch (ParseException e) {
            LOG.info("Date Parsing Issue - date: " + date);
            e.printStackTrace();
        }
    }
    return null;
}

⚠️ 注意:SimpleDateFormat是线程不安全的,别在多线程环境下共享同一个实例哦!

方案二:用Java 8+的新日期API(强烈推荐)

从Java 8开始,Java推出了更合理、线程安全的java.time日期API,用起来更顺手,也不容易踩坑:

private static final DateTimeFormatter DOB_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);

public static String convertStringToFormattedDateString(String date) {
    if (date != null) {
        try {
            // 解析字符串为LocalDate(只存日期,没有时间,更符合你的需求)
            LocalDate localDate = LocalDate.parse(date, DOB_FORMATTER);
            // 直接格式化成指定字符串(其实这里直接返回parse后的结果也可以,因为已经验证了格式,显式format更清晰)
            return localDate.format(DOB_FORMATTER);
        } catch (DateTimeParseException e) {
            LOG.info("Date Parsing Issue - date: " + date);
            e.printStackTrace();
        }
    }
    return null;
}

额外提醒

如果你因为旧代码兼容,必须返回Date对象,那没办法改变它的默认输出格式——要展示成yyyy-MM-dd,只能在需要输出/展示的时候,调用format()方法把它转成字符串才行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:34:30