无法解析的日期例外 - 月份日期格式

时间:2016-12-09 12:34:37

标签: java date parsing

我有这种格式(字符串)的日期:早上4点CST 9 DEC 16

我想使用以下代码解析它:

String sDate = "4 AM CST  9 DEC 16";
Date st = new SimpleDateFormat("h aaa z d MMM yy",Locale.ENGLISH).parse(sDate);
DateFormat formatter = DateFormat.getDateTimeInstance(
                            DateFormat.LONG, 
                            DateFormat.FULL, 
                            new Locale("no"));
                    sDate = formatter.format(st);

但我有这个例外:

java.text.ParseException:Unparseable date:“4 AM CST 9 DEC 16”

我真的不确定但是因为我的sDate中的月份,字符都是大写的值而日期格式“MMM”唯一的大写字母是每个月的第一个字母?

2 个答案:

答案 0 :(得分:1)

This code:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
  public static void main(String[] args) throws ParseException {
    String sDate = "4 AM CST  9 DEC 16";
    Date st = new SimpleDateFormat("h aaa z d MMM yy", Locale.ENGLISH).parse(sDate);
    DateFormat formatter = DateFormat.getDateTimeInstance(
        DateFormat.LONG,
        DateFormat.FULL,
        new Locale("no"));
    sDate = formatter.format(st);
    System.out.print(sDate);
  }
}

works fine. I have java version "1.8.0_77"

答案 1 :(得分:0)

此异常的原因之一可能是您在计算机中进行的区域设置。除非您没有定义语言环境,否则在DateFormat.getDateTimeInstance()方法中,它将从您计算机的默认区域位置和格式中获取语言环境信息。

当我的同事在同一个项目和完全相同的开发环境中没有得到这样的例外时,我在修改现有项目时遇到了这样的例外。然后我在控制面板中检查了他的区域设置。该项目为日语语言环境和日期格式,但按计算机日期格式为英语(UK)。更改格式代码后,不再显示错误。

转到控制面板->时钟,语言和区域->区域

enter image description here enter image description here