簡體   English   中英

排序和比較Java Date對象會產生意外結果

[英]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:mmHH:mm:ss嗎?

如果t.date實際上是一個Date對象,則您輸入的格式無關緊要。 它將比較Date對象本身的字段。

因此,幾乎可以肯定的是,如何將文本日期轉換為Date對象。

我認為您需要調試過程,並找出原因(或是否)將日期轉換錯誤。

首先,您應該使用的格式是:

dd/MM/yy HH:ss

下殼體m (如所示在這里 )為分鍾,而不是個月。 我假設您想要的是“奇怪的” HH:ss盡管它沒有分鍾指示符。

您可能還需要檢查一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM