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

字符串转Date遇Unparsable Date Error,如何转回yyyy-MM-dd格式Date?

解决方法:将yyyy-MM-dd格式字符串转回Date类型

首先得帮你理清一个关键误区:Date类型本身没有格式,它本质上只是一个表示时间戳的对象(记录从1970年1月1日00:00:00 UTC以来的毫秒数)。你看到的Thu May 24 13:14:41 BRT 2018只是Date对象默认的toString()输出格式,并不是它存储的格式。你的需求应该是:把dataFormatada(yyyy-MM-dd格式的字符串)解析成Date对象,之后如果需要以yyyy-MM-dd的形式展示,再重新格式化即可。

你之前的代码报错,是因为你用yyyy-MM-dd的格式去解析一个包含星期、时分秒、时区的完整日期字符串(Thu Sep 28 20:29:30 JST 2000),格式完全不匹配,自然会抛出ParseException。你要解析的是dataFormatada,不是原始data变量的字符串形式。

正确的代码实现(使用SimpleDateFormat)

// 假设dataFormatada是你已经格式化好的yyyy-MM-dd字符串,比如"2018-05-24"
String dataFormatada = "2018-05-24";

// 创建对应格式的DateFormat,指定Locale避免地区差异导致的解析错误
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
// 开启严格解析模式,避免解析不规范的日期(比如"2018-13-01"这种无效日期)
dateFormat.setLenient(false);

try {
    // 解析字符串得到Date对象
    Date parsedDate = dateFormat.parse(dataFormatada);
    
    // 注意:这里打印的是Date的默认toString格式,比如"Thu May 24 00:00:00 BRT 2018"
    System.out.println(parsedDate);
    
    // 如果需要再次转成yyyy-MM-dd格式的字符串,直接用同一个DateFormat格式化即可
    String formattedString = dateFormat.format(parsedDate);
    System.out.println(formattedString); // 输出:2018-05-24
} catch (ParseException e) {
    // 处理解析失败的情况,比如字符串格式不正确
    e.printStackTrace();
}

更推荐的Java 8+新日期API

如果你使用的是Java 8及以上版本,强烈建议使用java.time包下的新日期时间API,它不仅线程安全,而且设计更清晰:

String dataFormatada = "2018-05-24";

// 解析成LocalDate(只包含日期,没有时间和时区)
LocalDate localDate = LocalDate.parse(dataFormatada);

// 如果需要兼容旧代码,转成Date对象
Date parsedDate = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

// 转回yyyy-MM-dd格式的字符串
String formattedString = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(formattedString); // 输出:2018-05-24

关键提醒

  • 永远确保解析时使用的格式字符串和待解析的字符串格式完全匹配,这是避免ParseException的核心。
  • Date对象本身不存储格式,所有的格式都是通过格式化工具(比如SimpleDateFormat、DateTimeFormatter)生成的字符串形式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:14:54