2010-06-14 8 views
0

Date 생성자를 확장하는 것이 가장 좋은 방법인지 궁금합니다.자바 스크립트 날짜 객체 늘리기

는 는 는

Internet Explorer (< 7+8) 내가이 어쨌든, FireFoxChrome 구문 분석하는 표준 방법이 아니라고 인정해야

new Date('2010-05-11'); 

같은 일을 구문 분석 할 수있는 I가 직면하고있어 문제는 잘에 수행 그 종류의 날짜 문자열.

이제 새로운 Date()를 호출하기 전에 문자열을 분할/구문 분석/다시 작성해야합니까? 아니면 좀 더 우아한 솔루션이 있습니까? 내가보기 엔 네이티브 JS 방법을 선호

업데이트는 작업을 수행합니다. 어쨌든 사용자 정의 파싱을 추가하는 방법이 없으면그냥 datestring을 변환합니다.

답변

2

필자는 브라우저의 기본 구문 분석 기능에 의존하지 않고 날짜 분석을 위해 라이브러리를 사용하는 것이 거의 항상 성과라고 생각합니다.

어리석은 것들을 모두 남겨두고 최소한의 응용 프로그램을 사용하면 모든 브라우저에서 일관된 방식으로 (yyyy-mm-dd)과 같은 간단한 날짜를 구문 분석 할 수 있습니다.

브라우저가이를 보장 할 수 없다면 날짜 문자열을 모든 브라우저를 유화하는 형식으로 조작 할 필요가 없습니다. 소스 문자열 자체가 2010-06-08-12:29:53과 같은 비표준 형식 인 경우 (세 번째 대시 참고)이 feed에 최근에 왔음을 표준화하면 의미가 생길 수 있으며 이후에는 동일한 문제가 다시 발생합니다 - 네이티브 구문 분석 (어느 IMO 나쁜 생각) 또는 라이브러리를 사용하여.

2

DateJS은 모든 종류의 서로 다른 문자열을 구문 분석하지만, 단지 약간의 시간을 보내는 경우에는 필요하지 않을 것입니다. 스플릿/구문 분석은/다시 IMO는 페이지에 다른 스크립트를 부착보다 더 우아한 :

var dStr = '2010-05-11'.split('-'); 
var d = new Date(dStr[0], dStr[1] - 1, dStr[2]); 

그냥 날짜 매개 변수가없는 반면, 제로 기반 Date()의 달 매개 변수를 기억한다. 이상한, 알아.

+0

바로 지금 제가하고있는 일입니다. 방금 Date 객체 자체를 확장하는 네이티브 메소드가있을 것이라고 기대했습니다. 그것은 학문적 질문과 같습니다. +1 어쨌든 – jAndy

+0

@jAndy :'Date()'또는'Date.parse()'를 줄이는 것만으로는 부족합니다. –