如何使用Java SimpleDateFormat正确格式化异常日期字符串?

时间:2011-09-26 08:56:47

标签: java parsing date simpledateformat matcher

我的日期格式如下:

Pon Cze 07, 2011 9:42 pm

这是波兰语相当于英语日期:

Mon Jun 07, 2011 9:42 pm

我正在使用以下SimpleDateFormat匹配器:

SimpleDateFormat("EEE MMM dd, yyyy H:mm a", new Locale("pl", "PL"))

但由于AssertionFailedError,无法解析日期。我尝试了其他一些解决方案,但没有人适合我。你有什么想法我做错了吗?

2 个答案:

答案 0 :(得分:3)

有两个问题:

  1. pl语言环境中的日期为wt,而非Pon
  2. 不考虑AM / PM指标,因为您使用H(表示0到23之间的小时)而不是h
  3. 我只是从第一个空格后的第一个字符进行解析(以避免解析“Pon”),并H替换h。在模式中:

    DateFormat df = new SimpleDateFormat("MMM dd, yyyy h:mm a", new Locale("pl", "PL"));
    Date d = df.parse(s.substring(s.indexOf(' ') + 1));
    

答案 1 :(得分:1)

看来,星期几只用两个字母表示,无论原因是什么。 尝试此代码并检查输出

    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd, yyyy H:mm a", new Locale("pl", "PL"));
    GregorianCalendar gc = new GregorianCalendar(new Locale("pl", "PL"));
    gc.setTime(new Date(System.currentTimeMillis()));
    System.out.println(sdf.format(gc.getTime()));

我的输出是:“Wt wrz 27,2011 11:05 AM”

所以也许如果你尝试两个字母的工作日,它可以工作