DateFormat format.parse parse exception:Unparseable date

时间:2015-10-21 09:50:53

标签: java android arrays sorting simpledateformat

我正在开发一个Android应用程序,在其中一个活动中,我根据日期对对象列表进行排序。

我遇到的问题是对象列表按德语区域设置的降序排序。

  • 如果区域设置设置为英语(英国),则列表将按升序排序。
  • 如果区域设置设置为德语(Deutschland),则列表将按降序排序。

为了对列表进行排序,我使用以下内容:

           Collections.sort(list, new Comparator<Object>() {
                @Override
                public int compare(MyPOJO obj1, MyPOJO obj2) {
                    DateFormat format = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy");
                    Date date1, date2;

                    try {
                        date1 = format.parse(obj1.getPubDate());
                        date2 = format.parse(obj2.getPubDate());

                        return date1.compareTo(date2);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }

                    return 0;
                }
            });  

对于英语,对于一个对象,我有以下日期格式: 2015年8月13日14:50:02 EEST 2015

对于德语,以下内容: Thu Aug 13 14:50:02 OESZ 2015

你知道这种行为的根本原因是什么,也许是解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:0)

使用字符串对数据进行编码是一种代码气味(称为"Primitive Obsession"

更改getPubDate()以返回Joda DateTime并将其表示为自数据存储中的纪元以来的毫秒数。