2012-03-11 3 views
0

오름차순으로 정렬하려고 시도하는 Java Date 객체가 여러 개 있습니다.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; 
    } 

이없이 I는 (Date.after() 또는 Date.before() 또는 Date.compareTo)을 사용하는 어떤 방법과 관계없이 로케일로 설정 한 것에있다.

내가 사용하여 로컬 시스템 기본 설정을 시도했습니다 : 없음 효과에

Locale.setDefault(Locale.ENGLISH); 

.

아이디어가 있으십니까?

답변

1
"dd/mm/yy HH:ss" 

mm은 분 단위입니다. 아마도 MM (월)을 찾고있을 것입니다.

또한, HH:ss? HH:mm 또는 HH:mm:ss이 아닙니까?

0

t.date이 실제로 Date 인 경우 입력 형식이 적합하지 않습니다. Date 개체 자체의 입력란을 비교합니다.

따라서 텍스트 날짜를 Date 개체로 변환 한 방법은 거의 확실하게 문제가됩니다.

과정을 디버깅하고 날짜가 잘못 변환되는 이유 (또는 이유)를 찾아야한다고 생각합니다. 처음에는

, 당신은 사용해야 형식은 다음과 같습니다

dd/MM/yy HH:ss 

(here을 같이) m 분보다는 개월 낮을 경우. 나는 당신의 오히려 "이상한"HH:ss이 분 지정자가 없더라도 당신이 원하는 것이라고 가정합니다.

당신도 확인해 볼 수 있습니다.

관련 문제