2012-03-11 84 views
0

我有許多java日期對象,我嘗試按升序排列日期排序。 「:SS DD/MM/YY HH」,並以相同的格式輸出,例如對Java日期對象進行排序和比較會產生意想不到的結果

這些從CSV使用英國的格式簡單的日期格式器裝載

new SimpleDateFormat("dd/mm/yy HH:ss", Locale.ENGLISH); 

這工作正常。

然而,當我嘗試這些(通過實現比較器接口)來進行排序,這些在美國日期格式(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); 

沒有效果。

任何想法?

回答

1
"dd/mm/yy HH:ss" 

mm是小時分鐘。您可能正在尋找MM(一年中的月份)。

而且,HH:ss?不是HH:mmHH:mm:ss

0

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

因此它幾乎肯定你如何轉換你的文本日期爲Date對象的問題。

我認爲你需要調試進程並找出爲什麼(或如果)日期被錯誤地轉換。

一開始,你應該使用格式爲:

dd/MM/yy HH:ss 

小寫m(如圖所示here)是分鐘,而不是幾個月。我假設你的「奇怪」HH:ss是你想要的,即使它沒有分鐘說明符。

您可能要檢查爲好。

相關問題