[javascript] moment.js에서 날짜 만 비교하는 방법

moment.js를 처음 사용합니다. 날짜 개체가 있고 관련 시간이 있습니다. 비교할 시간을 제외하고 그 날짜가 오늘 날짜보다 크거나 같은지 확인하고 싶습니다 .

 var dateToCompare = 2015-04-06T18:30:00.000Z

dateToCompare가 오늘 날짜보다 크거나 같은지 확인하고 싶습니다. 나는 moment.js의 isSame을 확인했지만 문자열과 날짜 부분 만 취하는 것 같습니다. 그러나 내 날짜를 문자열로 변환하거나 더 이상 조작하고 싶지 않습니다. 해당 날짜를 문자열로 변환 할 때 (오프셋 또는 dst 등을 추가하는 것과 같은) 자바 스크립트가 예상치 못한 일을 할 수 있거나 내가 틀렸을 수 있다고 걱정하기 때문입니다.

문서의 isSame () 샘플

moment('2010-10-20').isSame('2010-10-20');

또한 하나의 문으로 결합 된 isSame () 및 isAfter () 같은 것을 찾고 있습니다.

moment.js 만 사용하여 비교해야합니다. 일반 자바 스크립트 날짜 비교를 제안하지 마세요.



답변

문서는 세분성을 지정하기 위해 두 번째 매개 변수를 전달한다는 것이 매우 분명 합니다.

단위를 밀리 초 이외의 단위로 제한하려면 단위를 두 번째 매개 변수로 전달하십시오.

moment('2010-10-20').isAfter('2010-01-01', 'year'); // false
moment('2010-10-20').isAfter('2009-12-31', 'year'); // true

두 번째 매개 변수는 검사 할 단일 값이 아니라 정밀도를 결정하므로 day를 사용하면 년, 월, 일을 검사합니다.

귀하의 경우 'day'에는 두 번째 매개 변수로 전달 합니다.


답변

그동안 isSameOrAfter방법을 사용할 수 있습니다 .

moment('2010-10-20').isSameOrAfter('2010-10-20', 'day');

문서 : https://momentjs.com/docs/#/query/is-same-or-after/


답변

제 경우에는 두 날짜를 비교하기 위해 다음 코드를 수행했습니다.

var date1 = "2010-10-20";
var date2 = "2010-10-20";
var time1 = moment(date1).format('YYYY-MM-DD');
var time2 = moment(date2).format('YYYY-MM-DD');
if(time2 > time1){
	console.log('date2 is Greter than date1');
}else if(time2 > time1){
	console.log('date2 is Less than date1');
}else{
	console.log('Both date are same');
}
<script src="https://momentjs.com/downloads/moment.js"></script>


답변

startOf('day')방법을 사용 하여 날짜 만 비교할 수 있습니다.

예 :

var dateToCompare = moment("06/04/2015 18:30:00");
var today = moment(new Date());

dateToCompare.startOf('day').isSame(today.startOf('day'));


답변