두 날짜 사이의 일 수를 계산하는 방법
Date Picker 컨트롤에서 가져온 두 개의 입력 날짜가 있습니다.2012년 2월 2일과 2012년 2월 7일 종료일을 선택했습니다.저는 그것을 위해 다음과 같은 코드를 작성했습니다.
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')
diff를 "ends"에서 포함하거나 배타적으로 하도록 강제한다(@commentspal이 코멘트에서 제안함). - 세 번째 인수 설정
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 (javascript로 날짜 연산 계산은 매우 간단합니다)
firstDate.diff(secondDate, 'days', false);// true| false(분수값의 경우 false)
결과에는 일수가 정수로 표시됩니다.
이것으로 충분합니다.
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
);
ES6에서 Moment.js를 사용하여 빠른 재사용 기능을 만들었습니다.
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>
또, 다음의 코드도 사용할 수 있습니다.mote("yourDateHere", "YYY-MM-DD").fromNow().그러면 오늘과 제공된 날짜의 차이가 계산됩니다.
// today
const date = new Date();
// tomorrow
const nextDay = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
// Difference in time
const Difference_In_Time = nextDay.getTime() - date.getTime();
// Difference in Days
const Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);
언급URL : https://stackoverflow.com/questions/9129928/how-to-calculate-number-of-days-between-two-dates
'programing' 카테고리의 다른 글
mysql dump - 일부 테이블 데이터를 제외합니다. (0) | 2022.10.20 |
---|---|
Java에 제네릭이 재작성되지 않은 것을 왜 신경써야 합니까? (0) | 2022.10.20 |
DBeaver를 사용하여 MariaDB에 연결할 수 없습니다. (0) | 2022.10.20 |
함수 호출에서 옵션 인수를 건너뛰려면 어떻게 해야 합니까? (0) | 2022.10.20 |
utf8mb4를 사용한 MariaDB 오류 (0) | 2022.10.20 |