【问题标题】:Error in converting String to Date in Java [duplicate]在Java中将字符串转换为日期时出错[重复]
【发布时间】:2019-03-17 13:56:34
【问题描述】:
DateFormat d1;
d1 = new SimpleDateFormat("dd-MMMM-yyyy");

public String duedate = "20-April.2019";
Date du =  d1.parse(duedate);

我不断收到的错误是:

默认构造函数无法处理隐式超级构造函数抛出的异常类型 ParseException。必须定义一个显式 构造函数

【问题讨论】:

  • 这个神秘的 JavaDoc...
  • dd-MMMM-yyyy20-April.2019: - vs .
  • 我建议你不要使用DateFormatSimpleDateFormatDate。这些类设计不佳且早已过时,前两个尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time APIDateTimeFormatterLocalDate
  • @DrMido 添加描述被询问的问题或错误的标签比通常描述代码或其所需结果的标签更好。
  • 顺便说一句,我认为到目前为止发布的三个答案中的任何一个都不能纠正您引用的错误消息。链接的原始问题的一些答案也是错误的,但我认为至少高票数的答案是可以的。

标签: java compiler-errors unhandled-exception default-constructor parseexception


【解决方案1】:

它应该只有三个“M”。

d1 = new SimpleDateFormat("dd-MMM-yyyy");

而且日期不应该有一个点。

String duedate = "20-April-2019";
Date du =  d1.parse(duedate);

【讨论】:

  • 对于大多数语言,4 'M' 是正确的,因为字符串包含完整的月份名称。 3 'M' 是月份的缩写,例如 Apr
【解决方案2】:

首先dateFormat和duedate必须对应,所以如果你的dateFormat使用破折号,duedate就不能使用点

String duedate = "20-April-2019";

其次,您必须考虑 ParseException 错误,因此您必须用 try/catch 包围 Date 的声明,如下所示:

try{
    Date du =  d1.parse(duedate);
} catch(ParseException e){
    e.printStackTrace();
}

【讨论】:

    【解决方案3】:

    您可以在此处找到如何使用 SimpleDateFormat 解析日期字符串的信息: https://docs.oracle.com/javase/10/docs/api/java/text/SimpleDateFormat.html

    出现错误,因为您的日期格式字符串与您尝试解析的日期字符串不匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 2017-11-20
      • 1970-01-01
      • 2023-03-30
      • 2020-01-24
      • 2014-03-25
      • 2011-06-08
      相关资源
      最近更新 更多