자바 스크립트 datediff - jaba seukeulibteu datediff

# 자바스크립트 날짜 비교 (유효기간 설정 등에 사용가능)

  • dateDiff함수 이용
var date1 = "2021-01-01";
var date2 = "2021-04-09";

var date1Split = date1.split("-");
var date2Split = date2.split("-");

var sDate1 = new Date(date1Split[0], date1Split[1], date1Split[2],);
var sDate2 = new Date(date2Split[0], date2Split[1], date2Split[2],);



var diffDays = dateDiff.inDays(sDate1, sDate2);
결과값 : 양수 or 음수
  • 결과값을 바탕으로 조건문을 사용하여 유효기간 설정 등에 사용할 수 있다.

�ڹ� ��ũ��Ʈ�� Ư�� ��¥���� ���� �ϼ��� ���ϴ� ���� ũ�� ����� �ʴ�.

MySQL DB������ DATEDIFF �Լ��� �̿��ϸ� ���� ���������� �ڹٽ�ũ��Ʈ���� �׷� ����� �����Ƿ� ��¥���� ������ �̿��Ͽ� ���ϴ� ����ۿ��� ����.

�����ϰ� �����ϸ� ���ϰ��� �ϴ� ��¥�� �и�������(millisecond) ������ ������ �� �� ��¥�� ���� ���� ������ ����ϴ� ���̴�.

�Ʒ� �ڵ�� 8�� 27�Ϻ��� 9�� 1�ϱ����� ��ü �ϼ��� ����ϴ� �����̴�.

1

2

3

4

5

6

7

8

9

10

11

12

<script type="text/javascript" language="javascript">

    var stDate = new Date("2015-07-27") ;

    var endDate = new Date("2015-08-01") ;

    var btMs = endDate.getTime() - stDate.getTime() ;

    var btDay = btMs / (1000*60*60*24) ;

    document.writeln(btDay);

</script>

���� �����ڵ带 �����ϸ� �� ��¥���� ���̴� "5"�� ��ȯ�Ѵ�. �ش� �ϼ��� �� ��¥�� �����ϰ� ���� ������ ��������.
�׸��� ���� �������� �ٸ��� 8�� 27���� "2015-07-27", 9�� 1���� "2015-08-01" �� �����Ͽ���.

�̴� �ڹٽ�ũ��Ʈ���� ���� ����ϴ� ������ 0 ~ 11 ���� �̱� �����̴�. �� �츮�� �˰� �ִ� �޿��� 1 �� ���ָ� �ȴ�.
��, 0�� 1��, 1�� 2��, 2�� 3���� ���Ѵٰ� ���� �ȴ�. (������� !!)

function getDateDiff(date1,date2) {
	var arrDate1 = date1.split("-");
	var getDate1 = new Date(parseInt(arrDate1[0]),parseInt(arrDate1[1])-1,parseInt(arrDate1[2]));
	var arrDate2 = date2.split("-");
	var getDate2 = new Date(parseInt(arrDate2[0]),parseInt(arrDate2[1])-1,parseInt(arrDate2[2]));

	var getDiffTime = getDate1.getTime() - getDate2.getTime();

	return Math.floor(getDiffTime / (1000 * 60 * 60 * 24));
}

자바 스크립트로 특정 날짜간의 차이 일수를 구하는 것은 크게 어렵지 않다.

MySQL DB에서는 DATEDIFF 함수를 이용하면 쉽게 구해지지만 자바스크립트에는 그런 기능이 없으므로 날짜간의 뺄셈을 이용하여 구하는 방법밖에는 없다.

간단하게 정리하면 비교하고자 하는 날짜를 밀리세컨드(millisecond) 단위로 변한한 뒤 두 날짜를 빼어 남은 값으로 계산하는 것이다.

아래 코드는 8월 27일부터 9월 1일까지의 전체 일수를 계산하는 예제이다.

<script type="text/javascript" language="javascript">

	var stDate = new Date(2015, 7, 27) ;
	var endDate = new Date(2015, 8, 1) ;

	var btMs = endDate.getTime() - stDate.getTime() ;
	var btDay = btMs / (1000*60*60*24) ;


	document.writeln(btDay);

</script>

위의 샘플코드를 실행하면 두 날짜간의 차이는 "5"를 반환한다. 해당 일수는 두 날짜를 포함하고 있지 않음에 유의하자.
그리고 위의 설명과는 다르게 8월 27일을 "2015, 7, 27", 9월 1일을 "2015, 8, 1" 로 지정하였다.

이는 자바스크립트에서 달을 사용하는 구간이 0 ~ 11 까지 이기 때문이다. 즉 우리가 알고 있는 달에서 1 을 빼주면 된다.
즉, 0은 1월, 1은 2월, 2는 3월을 뜻한다고 보면 된다. (기억하자 !!)

어제 오늘 내일

IT/Javascript

[Javascript] 경과 시간 계산하기 (시간, 분, 초)

hi.anna 2020. 7. 27. 01:13

Javascript에서 시간을 표현하고, 시간을 다루는 여러가지 방법을 알아보고 있습니다.

[HTML] 날짜 입력 항목에 현재 시간을 기본값으로 세팅하기

[Javascript] 현재 날짜, 시간 구하기

[Javascript] Date 객체로 원하는 날짜, 시간 표현하기

[Javascript] 날짜 계산하기 (년/월/일 더하기, 빼기)

[Javascript] 월의 마지막 날짜 계산하기

[Javascript] 날짜 계산 (Date) 마지막 날짜(말일)/윤달/윤년 처리하기

[Javascript] 시간 계산하기 (시/분/초/ 더하기, 빼기)

이번에는 Javascript에서 주어진 두 시간 사이의 

경과 시간 (시간, 분, 초)를 계산하는 방법입니다.

경과 시간 계산하기 (시, 분, 초)

두 시간 사이의 차이를 구하기 위해서는

먼저 Date 객체의 getTime() 메소드를 이용해서 각각의 날짜의 시간에 해당하는 숫자를 구하고, 

그 차이를 계산하면 됩니다.

dateObj.getTime()

Date의 getTime() 메소드는 '1970년 1월1 일 00:00:00 UTC'로부터 주어진 시간 사이의 경과시간(밀리초)를 리턴합니다.

즉, '1970년 1월1 일 00:00:00 UTC'의 getTime() 값은 0입니다.

그리고, '1970년 1월 1일 00:00:01 UTC'의 getTime() 값은 1000입니다.

이를 이용해서 경과시간을 계산할 수 있습니다.

 경과 시간 / 분 / 초 계산 

See the Pen Date by anna (@hianna) on CodePen.

2020/7/1 0:0:0 ~ 2020/7/1 2:30:4 사이의 경과시간을 계산하고,

각 경과 시간을 초, 분, 시간 단위로 다시 환산하였습니다. 

 const elapsedMSec = date2.getTime() - date1.getTime(); 

두 시간(date1, date2)의 getTime() 값의 차는

두 시간 사이의 경과시간(밀리세컨드 단위)을 의미합니다.

 const elapsedSec = elapsedMSec / 1000; 

밀리세컨드(millisecond) 단위를 초단위(second)로 변환하기 위해 1000으로 나누어 주었습니다.

 const elapsedMin = elapsedMSec / 1000 / 60; 

밀리세컨드(millisecond) 단위의 경과 시간을 초단위(second)로 변환하기 위해 1000으로 나누어 주고,

이것을 분단위(minute)로 변환하기 위해 60으로 다시 나누어 주었습니다.

 const elapsedHour = elapsedMSec / 1000 / 60 / 60; 

밀리세컨드(millisecond) 단위의 경과 시간을 초단위(second)로 변환하기 위해 1000으로 나누어 주고,

이것을 분단위(minute)로 변환하기 위해 60으로 다시 나누어 주었습니다.

그리고, 시간단위(hour)로 변환하기 위해 다시 60으로 나누어 주었습니다.

See the Pen Date by anna (@hianna) on CodePen.

Date 객체의 연산을 할때는 getTime() 메소드를 사용하지 않고,

Date 객체끼리 연산을 해도 getTime() 메소드를 사용하여 연산한 것과 같은 결과를 얻을 수도 있습니다.