2010-07-16 4 views
7

날짜 목록을 정렬하려고하지만 일관되게 처리되지 않는 null 날짜로 고민하고 있습니다.JavaScript Date.parse() 및 null 날짜

그래서 내가 좋아하는 뭔가가 필요합니다

var date = Date.parse(dateString); 
if (!date) { 
    date = Date.MinValue; 
} 

을하지만 올바른 구문을 찾기 위해 사투를 벌인거야. 감사합니다


업데이트 : 버그는 다른 문제 일 밝혀졌다. 나는 Datejs을 프로젝트의 다른 부분에서 사용하기 위해 가져 왔으므로 Datejs가 표준 자바 스크립트 메소드를 오버라이드하는 Date.parse() 메소드를 정의한다는 사실을 깨닫지 못했습니다.

어쨌든 Datejs에는 "A"로 시작하는 날짜를 올바르게 처리하지 못하는 이상한 버그가 있습니다. 그래서 실제로 내 널 날짜가 올바르게 주문되었습니다, 그것은 단지 4 월과 8 월 날짜가 그들과 뒤섞이는 것이 었습니다.

해결 방법은 특정 형식 문자열을 제공 할 수있는 Datejs Date.parseExact 메서드를 사용하는 것입니다 (here 참조).

답변

9

parse()는 불가능한 구문 분석에서 NaN을 반환합니다.

var date = Date.parse(dateString) || 0; 
4

잘못된 날짜를 확인하려면 isNaN (날짜)을 사용할 수 있습니다. "MinValue; from Date"를 사용 하시겠습니까? 저는 크롬에서 js를 실행하고 정의되지 않은 상태로 유지하고 있습니다.

+0

개인적으로이 테스트가 더 좋으며, 검사 할 때 가독성이 더 좋음 'if (! isNaN (날짜)) ' 보다 'if (날짜! = 0)' – Keerigan

3

유효한 JS Date 객체 ('비어 있음' - 또는 해제하지만, 따라서 기본적으로 1970 년 1 월 01,)는 falsey의 여부를 테스트하기 위해 사용할 수 :

var null_date = new Date(0); 

이것은 최소한의 (0 번째) 타임 스탬프를 설정 한 날짜 객체를 생성 할 경우 날짜() 카운트를 시작합니다 ... 결코 설정되지 않은 Date 객체와 동등합니다.

관련 문제