【问题标题】:java.text.ParseException Unparseable datejava.text.ParseException 无法解析的日期
【发布时间】:2020-06-26 15:15:46
【问题描述】:

当我将特定格式应用于日期时出现解析异常。

这是我的代码:

System.out.println("*********************1**********************");

if(row.getCell(67).toString().equals("null"))
{
    System.out.println("*********************2**********************");

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, 1988);
    cal.set(Calendar.MONTH, Calendar.JUNE);
    cal.set(Calendar.DAY_OF_MONTH, 1);
    Date dateRepresentation = cal.getTime();
    rfx.setRv_rc_date(dateRepresentation);
}
else
{
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd", Locale.ENGLISH);
    cal.setTime(sdf.parse(row.getCell(67).toString()));
    System.out.println("******************************************************");
    System.out.println(cal);
    System.out.println("*******************************************************");
}

这是错误:

java.text.ParseException:无法解析的日期:“30-janv.-2020”

【问题讨论】:

标签: java date datetime calendar apache-poi


【解决方案1】:

看来你要解析一个法国日期,所以你必须使用Locale.FRENCH

String dateval = row.getCell(67).toString();
SimpleDateFormat sdf= new SimpleDateFormat( "dd-MMM-yyyy", Locale.FRENCH );
Date date = sdf.parse( dateval );
System.out.println(date);

【讨论】:

    【解决方案2】:

    您正在尝试解析法国日期(janv. 是 janvier 或英语中 January 的缩写),因此您必须使用 Locale.FRENCH 代替 Locale.ENGLISH,如下所示:

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.FRENCH);
    Date date = sdf.parse("30-janv.-2020");
    

    请使用java.time api 而不是Date 或Calendar 类,除非您有特定的理由这样做。

    【讨论】:

      猜你喜欢
      • 2021-07-05
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多