2017-12-12 4 views
-4

그래서 나는 (이 정확한 문자열의 형식) 날짜날짜가 두 범위 (ReactJS/JavaScript) 사이에 있는지 어떻게 확인합니까?

2017-4-28 

과 날짜를 말할 수 있습니다

2017-4-20 
2017-5-16 
어떻게 첫 번째는 둘 사이에 있는지 확인 할

?

편집 :이 두 문자열 대부분의 일들이 날짜를 포함하는 경우와 마찬가지로

+0

당신은'moment.js' 또는'javascript date object'를 사용할 수 있습니다. – ram1993

+0

@ Adriani6 실제로'Date' 객체에 대해'<' and '> '을 직접 사용할 수 있습니다.'getTime()'이 필요하지 않습니다. – samanime

+0

@samanime 절대 알지 못했습니다. 우리는 매일 새로운 것을 배웁니다.) – Adriani6

답변

2

const date = new Date('2017-4-28'); 
 
const start = new Date('2017-4-20'); 
 
const end = new Date('2017-5-16'); 
 

 
if (date > start && date < end) { 
 
    console.log('in between'); 
 
} else { 
 
    console.log('outside'); 
 
}

은, 그것은 Date 객체로 변환하는 것이 가장 좋습니다. 사용중인 형식은 직접 구문 분석 할 수있는 형식이므로 쉽게 사용할 수 있습니다. new Date(dateStr).

그 후에는 쉽게 비교할 수 있습니다. <> 연산자는 예상대로 정확히 Date 개체에서 작업하므로 date > startdate < end을 확인할 수 있습니다.

+0

"* 날짜와 관련된 대부분의 작업과 마찬가지로 ... *"이 경우 [* localeCompare *] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/)를 사용하여 문자열을 비교하는 것이 더 간단합니다. Reference/Global_Objects/String/localeCompare), 내장 파서 (신뢰할 수없는 것으로 유명한)를 사용하지 않아도됩니다. – RobG

+0

실제로 '2017-12-01'은 이전의 '2017-2-01'로 표시되기 때문에이 정확한 형식은 작동하지 않습니다. 왜냐하면 모든 경우에 두 자리 숫자의 월을 사용하지 않기 때문입니다. 파서가 까다 롭다는 것에 동의하는 반면, 대다수의 브라우저는 적어도 "YYYY-MM-DD"형식이 맞다고 말할 수 있습니다. – samanime

+0

예, * localCompare *에 대해 정확합니다. 형식이 잘못된 문자열을 놓쳤습니다. "대다수"가 아니라 문자열이 유효한 ISO 8601이 아니므로 브라우저는 다른 것으로 구문 분석하거나 유효하지 않은 날짜를 반환 할 수 있습니다. 추첨을 통해 결과를 얻을 수 있습니다. UTC 또는 로컬인지 여부를 포함하여 비교할 수 있습니다 (비교 대상은 아니지만 다른 경우가있을 수 있음). – RobG