Date Picker 컨트롤에서 가져온 두 개의 입력 날짜가 있습니다. 시작 날짜 2/2/2012 및 종료 날짜 2/7/2012를 선택했습니다. 나는 그것을 위해 다음 코드를 작성했다.
6으로 결과를 얻어야하지만 5를 받고 있습니다.
function SetDays(invoker) {
var start = $find('<%=StartWebDatePicker.ClientID%>').get_value();
var end = $find('<%=EndWebDatePicker.ClientID%>').get_value();
var oneDay=1000 * 60 * 60 * 24;
var difference_ms = Math.abs(end.getTime() - start.getTime())
var diffValue = Math.round(difference_ms / oneDay);
}
아무도 내가 어떻게 정확한 차이를 얻을 수 있는지 말해 줄 수 있습니까?
답변
http://momentjs.com/ 또는 https://date-fns.org/
순간 문서에서 :
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // =1
또는 시작을 포함하려면
a.diff(b, 'days')+1 // =2
타임 스탬프 및 시간대를 수동으로 엉망으로 만듭니다.
특정 사용 사례에 따라 다음 중 하나를 수행 할 수 있습니다.
- 사용
a/b.startOf('day')
및 / 또는a/b.endOf('day')
은 “끝”(같은 의견 @kotpal에 의해 제안)에 포함 또는 독점 할은 diff를 강제로. - 설정 세 번째 인수는
true
당신이 다음 할 수있는 부동 소수점 사랑하는 얻기 위해Math.floor
,Math.ceil
또는Math.round
으로 필요합니다. - 옵션 2는
'seconds'
대신'days'
에을 나누고 나눠서 수행 할 수도 있습니다24*60*60
.
답변
moment.js 를 사용 하면 쉽게 할 수 있습니다.
var start = moment("2018-03-10", "YYYY-MM-DD");
var end = moment("2018-03-15", "YYYY-MM-DD");
//Difference in number of days
moment.duration(start.diff(end)).asDays();
//Difference in number of weeks
moment.duration(start.diff(end)).asWeeks();
주어진 날짜와 현재 날짜의 차이를 일 수 (시간 무시)로 찾으려면 다음과 같이 현재 날짜의 순간 객체에서 시간을 제거하십시오
moment().startOf('day')
주어진 날짜와 현재 날짜의 차이를 일 수로 찾으려면
var given = moment("2018-03-10", "YYYY-MM-DD");
var current = moment().startOf('day');
//Difference in number of days
moment.duration(given.diff(current)).asDays();
답변
시험:
//Difference in days
var diff = Math.floor(( start - end ) / 86400000);
alert(diff);
답변
moment.js를 사용하여 이것을 시도하십시오 (자바 스크립트에서 날짜 연산을 계산하는 것은 매우 쉽습니다)
firstDate.diff (secondDate, ‘days’, false); // 분수 값의 경우 true | false
결과는 정수로 일 수를 제공합니다.
답변
또한이 코드를 사용할 수 있습니다 : moment ( “yourDateHere”, “YYYY-MM-DD”). fromNow (). 오늘 날짜와 제공된 날짜의 차이를 계산합니다.
답변
이것은 나를 위해 작동합니다 :
const from = '2019-01-01';
const to = '2019-01-08';
Math.abs(
moment(from, 'YYYY-MM-DD')
.startOf('day')
.diff(moment(to, 'YYYY-MM-DD').startOf('day'), 'days')
) + 1
);
답변
Moment.js를 사용하여 ES6에서 빠른 재사용 기능을 만들었습니다.
const getDaysDiff = (start_date, end_date, date_format = 'YYYY-MM-DD') => {
const getDateAsArray = (date) => {
return moment(date.split(/\D+/), date_format);
}
return getDateAsArray(end_date).diff(getDateAsArray(start_date), 'days') + 1;
}
console.log(getDaysDiff('2019-10-01', '2019-10-30'));
console.log(getDaysDiff('2019/10/01', '2019/10/30'));
console.log(getDaysDiff('2019.10-01', '2019.10 30'));
console.log(getDaysDiff('2019 10 01', '2019 10 30'));
console.log(getDaysDiff('+++++2019!!/###10/$$01', '2019-10-30'));
console.log(getDaysDiff('2019-10-01-2019', '2019-10-30'));
console.log(getDaysDiff('10-01-2019', '10-30-2019', 'MM-DD-YYYY'));
console.log(getDaysDiff('10-01-2019', '10-30-2019'));
console.log(getDaysDiff('10-01-2019', '2019-10-30', 'MM-DD-YYYY'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>