최근 두 개의 Java Date 객체를 equals()와 비교할 때 이상한 점을 발견했습니다. this.getDate() 및 other.getDate()는 응용 프로그램에서 Java Date 객체를 반환합니다.자바의 Date 객체 비교
코드 :
logger.debug("Date 1: " + this.getDate().toString());
logger.debug("Date 1: " + this.getDate().getTime());
logger.debug("Date 2: " + other.getDate().toString());
logger.debug("Date 2: " + other.getDate().getTime());
logger.debug("Dates are equal: " + this.getDate().equals(other.getDate()));
logger.debug("Dates match in comparison: " + (this.getDate().compareTo(other.getDate()) == 0));
출력 : (가독성을 위해 추가 된 빈 줄)
Date 1: 2014-07-28 00:00:00.0
Date 1: 1406498400000
Date 2: Mon Jul 28 00:00:00 CEST 2014
Date 2: 1406498400000
Dates are equal: false
Dates match in comparison: true
두 가지가 있습니다 나는하지 않습니다
- 왜 equals()가 false를 반환합니까?
- 왜 toString()의 반환 값이 형식을 변경합니까?
는 2 개의 일자가 동일한 지 어떤지를 비교합니다 :
나는 그것이 말하는 Date.equals()의 문서를 확인했습니다. 인수가 null이 아니고 밀리 초 단위 인 시점을이 객체로 나타내는 Date 객체 인 경우에만 결과가 true입니다.
따라서 getTime 메서드 이에 대해 동일한 long 값을 반환하는 경우에만 두 Date 객체가 동일합니다.
는 또한 Date.equals()의 구현을 살펴했다 :
public boolean equals(Object obj) {
return obj instanceof Date && getTime() == ((Date) obj).getTime();
}
왜하지 equals()
반환 거짓, 심지어 getTime()
하지만 수익률 모두 Date
개체에 대한 1406498400000?
참조 : http://docs.oracle.com/javase/7/docs/api/java/util/Date.html#equals(java.lang.Object)
왜 equals()가 false를 반환하는지 잘 모르겠지만 [compareTo()] (http://docs.oracle.com/javase/6/docs/api/java/util/)를 전환하여 사용할 수 있습니다. Date.html # compareTo % 28java.util.Date % 29) 날짜 비교 (내가 아직 보지 못했던 메서드!) – rageandqq
toString은 형식을 변경하지 않으며 Date에는 형식 개념이 없습니다. 밀리 초 수. toString, ethos simple은 현재 로컬을 사용하여이 값의 표현을 표시합니다. – MadProgrammer
'Date()'객체의 생성을 포함하도록 예제를 업데이트 할 수 있습니까? – merlin2011