2014-09-02 1 views
0

사용자가 입력 한 날짜의 유효성을 검사하려고합니다. 오늘 날짜 또는 그 이후 날짜 여야합니다. 내가 어떻게 할 수 있니?자바 스크립트 간단한 날짜 확인

아래 코드의 조건이 false 인 이유는 무엇입니까?

var today = new Date(); 
var idate = new Date('02/09/2014'); 

if(today > idate) { 
    alert('your date is big'); 
} 

내가 today을 설정하면 다음 오늘 날짜이며, 또한 그때 오늘의 날짜가 내가 날짜를 비교하는 방법을 다음도 idate 전달? 여기

는 JSFiddle입니다 : http://jsfiddle.net/0osh0q8a/1/

+1

문자열에서 새 Date 객체를 만드는 형식으로 날짜를 사용 if(today.getTime() == idate.getTime()) 업데이트 된 바이올린을 참조하십시오 : 그러나 ==는 항상 2 날짜가 동일한 사용하는 경우 확인, false를 돌려줍니다 '로케일 정보에 대한 문제를 피할 수 있습니다. (예 :'새로운 날짜 ('2014-09-02');). – melancia

답변

1

몇 가지 고려해야 할 사항.

string 표현에서 새 Date 개체를 만들 때 YYYY-MM-DD 형식으로 지정하십시오. 이렇게하면 로케일 문제를 피할 수 있습니다.

두 날짜를 비교할 때 시간을 무시할 수 있으면 정확하게 동일한 시간으로 설정하십시오. 여기에있는 것처럼 보입니다.

마지막으로 Date.parse()을 사용하여 개체가 유효한 날짜인지 확인하고 비교할 수있게하십시오. 보조 노트로

Demo

var today = new Date(); 
var idate = new Date('2014-09-02'); 
// The date entered by the user will have the same 
// time from today's date object. 
idate.setHours(today.getHours()); 
idate.setMinutes(today.getMinutes()); 
idate.setSeconds(today.getSeconds()); 
idate.setMilliseconds(today.getMilliseconds()); 

// Parsing the date objects. 
today = Date.parse(today); 
idate = Date.parse(idate); 

// Comparisons. 
if (idate == today) { 
    alert('Date is today.'); 
} 
else if (idate < today) { 
    alert('Date in the past.'); 
} 
else if (idate > today) { 
    alert('Date in the future.'); 
} 

, 당신은 등 어려운 해결 날짜/시간 계산, 조작에 직면, 당신은 Moment.js 라이브러리를 사용할 수 있습니다. 정말 유용합니다. Moment.js

0

기본 데이터 파서는 읽고 당신의 idate 당신이 코드로 실행 2014년 9월 4일에 IDATE을 설정하면 따라서 todayidate

보다 큰, 월에는 2014 년 9 예상 됨

var today = new Date(); 
var idate = new Date('09/04/2014'); 

console.log(today); 
>>>Tue Sep 02 2014 11:48:52 GMT+0100 (BST) 
console.log(idate); 
>>>Thu Sep 04 2014 00:00:00 GMT+0100 (BST) 
0

두 가지 문제가 있습니다.

날짜 문화와 시간 부분.

먼저, new Date()은 현재 브라우저의 문화와 시간 부분을 포함하여 현재 날짜를 선택합니다.

new Date('09/04/2014')은 시간 부분을 추가하지 않으므로 00:00:00에서 시작하며 문화권은 다시 브라우저에 따라 다릅니다. 따라서 문화에 따라 3 월 9 일 또는 9 월 4 일을 의미 할 수 있습니다.

0

new Date()에는 시간 부분이 포함되어 있습니다. 이 같은 오늘 날짜 생성, 시간 신경 쓰지 않는 경우 :

var now = new Date(); 
var today = new Date(now.getFullYear(), now.getMonth(), now.getDay()); 

또 다른 점은 JS의 날짜 형식은 'YYYY/MM/DD으로되어 있는지입니다. 그래서처럼 'IDATE을'변경 : 당신은 날짜를 비교하는 <and>을 사용할 수 있습니다

var idate = new Date('09/02/2014'); 

.'YYYY-MM-DD : http://jsfiddle.net/0osh0q8a/3/