java - 从字符串解析为日期会引发无法解析的日期错误

标签 java date

我有一个名为 data 的变量,它具有以下格式的今天日期:Thu May 24 13:14:41 BRT 2018。然后我将其格式化为MySQL的日期类型格式,即yyyy-MM-dd。这段代码可以做到这一点:

String dataFormatada = new SimpleDateFormat("yyyy-MM-dd").format(data);

我想要做的是将其恢复为日期类型。我尝试过一些方法,但没有成功。主要解决方案是按照此其他 Stack Overflow's questioin 中所述进行操作。 ,通过一点修改,我得到了我想要的东西:

String target = "Thu Sep 28 20:29:30 JST 2000";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date result =  df.parse(target);  
System.out.println(result);

但是它不起作用,因为我在尝试解析时收到此错误:

java.text.ParseException: Unparseable date: "Thu Sep 28 20:29:30 JST 2000"

所以我不能只重新格式化data变量,也不能将dataFormatada恢复为日期格式。如何将 dataFormatada 转换为格式为 yyyy-MM-dd 的日期类型?

最佳答案

您的目标字符串格式为 EEE MMM dd HH:mm:ss zzz yyyy 格式。因此,您需要使用 EEE MMM dd HH:mm:ss zzz yyyy 作为模式,而不是 yyyy-MM-dd

    String target = "Thu Sep 28 20:29:30 JST 2000";
    DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
    Date result =  df.parse(target);  
    System.out.println(result);

如果您想将日期对象(即结果)转换为yyyy-MM-dd,请使用以下代码。

    DateFormat dfDateToStr = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    String formattedDate  = dfDateToStr.format(result);
    System.out.println("Formatted Date String : "+formattedDate);

关于java - 从字符串解析为日期会引发无法解析的日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514017/

相关文章:

java - 返回数组元素的长度

java - 获取 java.lang.IndexOutOfBoundsException : Index: 0, Size: 0 in react native

java - 如何使用 JDBC 在数据库中插入引用值?

sql - 两个日期之间的天数 - ANSI SQL

sql - 在 SQL 中查找匹配区间 - Oracle

python - 切片、合并会计年度日期并将其映射到日历年日期到新列

MYSQL组合 View 在日期范围内具有不同数量的条目记录的两个表

java - 将外部 int 添加到操作监听器中

java - 在组合框中获取文本文件

ruby - 检查 Date 对象时的额外数据是什么?