我有许多 java Date 对象,我试图按日期升序对它们进行排序。
这些是使用英国格式“dd/mm/yy HH:ss”的简单日期格式化程序从 CSV 加载的,并以相同的格式输出,例如
new SimpleDateFormat("dd/mm/yy HH:ss", Locale.ENGLISH);
这可以正常工作。
但是,当我尝试对这些进行排序(通过实现比较器接口(interface))时,这些排序似乎以美国日期格式(mm/dd/yy)不正确。
public int compare(CSVEntry t, CSVEntry t1) {
if (t.date.before(t1.date))
return -1;
else if (t.date.after(t1.date))
return 1;
else
return 0;
}
无论我使用什么方法(Date.after() 或 Date.before() 或 Date.compareTo),也无论区域设置如何。
我尝试使用以下方法设置系统默认本地:
Locale.setDefault(Locale.ENGLISH);
没有效果。
有什么想法吗?
最佳答案
"dd/mm/yy HH:ss"
mm
是一小时中的分钟。您可能正在寻找MM
(一年中的月份)。
另外,HH:ss
?不是 HH:mm
或 HH:mm:ss
?
关于java - 对 Java Date 对象进行排序和比较会产生意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651626/