[英]Java sorting an ArrayList of objects by 3 fields with priorities, getting unexpected results
[英]Sorting and comparing Java Date objects produces unexpected results
我有一些java Date對象,我試圖按升序對它們進行排序。
使用英國格式“ dd / mm / yy HH:ss”的簡單日期格式從CSV加載這些格式,並以相同格式輸出,例如
new SimpleDateFormat("dd/mm/yy HH:ss", Locale.ENGLISH);
這可以正常工作。
但是,當我嘗試對它們進行排序(通過實現Comparator接口)時,它們似乎錯誤地以美國日期格式(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
嗎?
如果t.date
實際上是一個Date
對象,則您輸入的格式無關緊要。 它將比較Date
對象本身的字段。
因此,幾乎可以肯定的是,如何將文本日期轉換為Date
對象。
我認為您需要調試該過程,並找出原因(或是否)將日期轉換錯誤。
首先,您應該使用的格式是:
dd/MM/yy HH:ss
下殼體m
(如所示在這里 )為分鍾,而不是個月。 我假設您想要的是“奇怪的” HH:ss
盡管它沒有分鍾指示符。
您可能還需要檢查一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.