【发布时间】:2016-01-20 06:13:00
【问题描述】:
我正在开发一个 android 应用程序,并且在其中一项活动中,我正在根据对象的日期对对象列表进行排序。
我遇到的问题是对象列表按德语区域设置的降序排序。
- 如果区域设置为英语(英国),则列表将按升序排序。
- 如果语言环境设置为 German(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 年 8 月 13 日星期四 14:50:02 OESZ
您知道导致这种行为的根本原因是什么,以及解决此问题的方法吗?
【问题讨论】:
-
首先这甚至不会编译...对象没有getPubDate方法...其次...即使很难说它返回的内容除了它是一个字符串...一些字符串...显然,如果它不是
"EE MMM dd HH:mm:ss z yyyy"格式,format.parse 将抛出异常,compare将返回 0 ...无论如何,以语言环境格式将数据存储为字符串是自找麻烦 -
我知道,我只使用它是为了不使用我的应用程序中的那个。我将编辑问题。
-
我同意塞尔文的观点。更改
getPubDate()以返回DateTime并将其表示为自数据存储中的纪元以来的毫秒。 -
你的方法奏效了。我使用的是 Date 类型而不是 String,并且不再需要解析发布日期。
-
(在德语中 Thu 应该是 Don 之类的。)
标签: java android arrays sorting simpledateformat