JavaScript에서 두 날짜의 차이를 알 수 있습니까?
하루 종일 두 날짜의 차이를 얻는 방법(하루 중 일부를 원하지 않음)
var date1 = new Date('7/11/2010');
var date2 = new Date('12/12/2010');
var diffDays = date2.getDate() - date1.getDate();
alert(diffDays)
위 사항을 시도했지만 효과가 없었습니다.
const date1 = new Date('7/13/2010');
const date2 = new Date('12/15/2010');
const diffTime = Math.abs(date2 - date1);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
console.log(diffTime + " milliseconds");
console.log(diffDays + " days");
날짜를 따옴표로 묶어야 합니다.나머지 코드는 밀리초 단위의 시간 차이를 얻은 후 일수를 얻기 위해 나눕니다.날짜에는 mm/dd/yyy 형식이 필요합니다.
보다 정확한 솔루션
...날짜에는 시간대 정보가 포함되어 있기 때문에 다른 요일광 절약 조정이 있는 지역에 걸쳐 있을 수 있습니다.
이 질문에 대한 이전 답변에서는 문제의 두 날짜가 여름 시간(DST)에 걸쳐 변경되는 경우를 고려하지 않았습니다.즉, DST는 밀리초 단위입니다.!= 1000*60*60*24
따라서 일반적인 계산은 실패합니다.
이 문제를 해결하려면 먼저 두 날짜를 UTC로 정규화한 다음 두 UTC 날짜 간의 차이를 계산합니다.
솔루션은 다음과 같이 쓸 수 있습니다.
const _MS_PER_DAY = 1000 * 60 * 60 * 24;
// a and b are javascript Date objects
function dateDiffInDays(a, b) {
// Discard the time and time-zone information.
const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
return Math.floor((utc2 - utc1) / _MS_PER_DAY);
}
// test it
const a = new Date("2017-01-01"),
b = new Date("2017-07-25"),
difference = dateDiffInDays(a, b);
UTC 시각은 DST를 준수하지 않기 때문에 이 기능은 동작합니다.UTC는 서머타임을 준수합니까?를 참조해 주십시오.
p.s. 이 답변에 대한 몇 가지 코멘트에 대해 논의한 후, DST 경계에 걸친 javascript 날짜의 문제를 이해하면 해결할 수 있는 방법은 여러 가지가 있을 것입니다.위에서 설명한 것은 심플한 (테스트 완료)솔루션입니다.두 개의 새로운 Date 객체를 인스턴스화하는 대신 간단한 산술/수학 기반 솔루션이 있는지 알고 싶습니다.그게 더 빠를 수도 있어요.
var date1 = new Date("7/11/2010");
var date2 = new Date("8/11/2010");
var diffDays = parseInt((date2 - date1) / (1000 * 60 * 60 * 24), 10);
alert(diffDays )
여러 가지 방법을 시도해보니 날짜 선택기를 사용하는 것이 가장 좋았지만, 날짜 형식이 자바스크립트에 문제를 일으킵니다.
여기 제 답이 있습니다. 바로 사용하실 수 있습니다.
<input type="text" id="startdate">
<input type="text" id="enddate">
<input type="text" id="days">
<script src="https://code.jquery.com/jquery-1.8.3.js"></script>
<script src="https://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/redmond/jquery-ui.css" />
<script>
$(document).ready(function() {
$( "#startdate,#enddate" ).datepicker({
changeMonth: true,
changeYear: true,
firstDay: 1,
dateFormat: 'dd/mm/yy',
})
$( "#startdate" ).datepicker({ dateFormat: 'dd-mm-yy' });
$( "#enddate" ).datepicker({ dateFormat: 'dd-mm-yy' });
$('#enddate').change(function() {
var start = $('#startdate').datepicker('getDate');
var end = $('#enddate').datepicker('getDate');
if (start<end) {
var days = (end - start)/1000/60/60/24;
$('#days').val(days);
}
else {
alert ("You cant come back before you have been!");
$('#startdate').val("");
$('#enddate').val("");
$('#days').val("");
}
}); //end change function
}); //end ready
</script>
a 바이올린은 여기서 데모를 볼 수 있습니다.
이것은 한 날짜를 다른 날짜에서 빼는 코드입니다.이 예에서는 날짜 개체가 아니면 getTime() 함수가 작동하지 않으므로 날짜를 개체로 변환합니다.
var dat1 = document.getElementById('inputDate').value;
var date1 = new Date(dat1)//converts string to date object
alert(date1);
var dat2 = document.getElementById('inputFinishDate').value;
var date2 = new Date(dat2)
alert(date2);
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var diffDays = Math.abs((date1.getTime() - date2.getTime()) / (oneDay));
alert(diffDays);
언급URL : https://stackoverflow.com/questions/3224834/get-difference-between-2-dates-in-javascript
'sourcecode' 카테고리의 다른 글
Larabel 5 클리어 뷰 캐시 (0) | 2022.09.16 |
---|---|
Jar Mismatch 종속성 목록에서 2가지 버전의 Android-support-v4.jar가 발견되었습니다. (0) | 2022.09.15 |
하위 쿼리를 조건으로 하는 MySQL DELETE FROM (0) | 2022.09.15 |
동일한 값을 여러 변수에 동시에 할당하시겠습니까? (0) | 2022.09.15 |
"알림:정의되지 않은 변수", "알림:정의되지 않은 인덱스", "경고:정의되지 않은 배열 키" 및 "알림:PHP를 사용한 정의되지 않은 오프셋" (0) | 2022.09.15 |