본문 바로가기
[ javascript ]

[Date 객체] 날짜를 관리하는 Date 객체 : 년월일시분초 출력, 요일 출력

by 히앤님 2020. 8. 8.
반응형
SMALL

Date 객체


자바스크립트 내장 객체 중 날짜와 시간 정보를 관리하는 객체.

 

< 객체 생성 형식 >

var 객체참조변수 = new Date( 년, 월-1, 일, 시, 분, 초 );

-> Date( ) 괄호 안이 비어있으면 현재 시스템 날짜가 세팅된다.

-> Date 객체에서 월은 0~11까지의 숫자로 관리된다. 따라서 -1을 해야한다. ex) 5월 : 4

-> <주의> 꺼낼 때는 +1을 해서 꺼내야 한다. 출력 결과와 상관 없이 시스템 날짜를 고려해서 코딩 해야 한다.

 

<메소드 호출>

객체참조변수.메소드(~)

 

속성변수 호출은 없음.

Date 객체 메소드

getFullYear( )

연도 리턴 
getYear()은 1990s까지 사용된 것으로 웹표준에서 삭제됨

getMonth( )

월(0~11)리턴.
리턴 후 1을 더해야 원하는 달 수 얻을 수 있다.

getDate( )

일 리턴

getDay( )

요일( 0(일) ~ 6(토) )리턴.
숫자가 리턴되기 때문에 한글로 출력하려면 따로 설정해 주어야 한다.

getHours( )

시간 리턴

getMinutes( )

분 리턴

getSeconds( )

초 리턴

getTime( )

[Date 객체의 날짜] - [1970년 1월 1일] 을 초 x 1000으로 리턴.

setFullYear( 년도 )

연도 세팅

setMonth( 달 -1 )

월(0~11) 세팅

setDate( 일 )

일 세팅

setHours( 시간 )

시간 세팅

setMinutes( 분 )

분 세팅

setSeconds( 초 )

초 세팅

 

<예제1> 현재 시스템 날짜 출력하기

var today = new Date();
document.write( " 현재시스템날짜 => " + today );
현재시스템날짜 => Wed Aug 05 2020 13:15:39 GMT+0900 (대한민국 표준시)

Date( ) 괄호에 아무것도 넣지 않으면 현재 시스템 날짜가 출력된다.

따라서 아래처럼 get 함수로 이쁘게 한글을 붙여서 출력해줘야 한다.

 

<예제1-1> 현재 시스템 날짜 출력하기(get 함수 사용)

var today = new Date();

document.write( " 현재년도(getFullYear) =>" + today.getFullYear() + "년" + "<br>");
document.write( " 웹표준에서 삭제됨(getYear) =>" + today.getYear() + "년" + "<br>");	 //현재 년도에서 1990을 뺀 숫자를 리턴한다.
document.write( " 현재월(getMonth)+1 => " + today.getMonth()+1 + "월" + "<br>");
document.write( " (현재월(getMonth)+1) => " + (today.getMonth()+1) + "월" + "<br>");
document.write( " 현재일(getDate) => " + today.getDate() + "일" + "<br>");
document.write( " 현재시(getHours) => " + today.getHours() + "시" + "<br>");	
document.write( " 현재분(getMinutes) => " + today.getMinutes() + "분" + "<br>");	
document.write( " 현재초(getSeconds) => " + today.getSeconds() + "초" + "<br>");
현재년도(getFullYear) =>2020년
웹표준에서 삭제됨(getYear) =>120년
현재월(getMonth)+1 => 71월
(현재월(getMonth)+1) => 8월
현재일(getDate) => 5일
현재시(getHours) => 14시
현재분(getMinutes) => 30분
현재초(getSeconds) => 18초

 

<예제2> 생일 날짜 출력하기

var birth = new Date(2020,11,25,8,20,30);
document.write( "내 생일시간 => " + birth.getFullYear() + "년" 
	+ (birth.getMonth()+1) + "월" 
	+ birth.getDate() + "일" 
	+ birth.getHours() + "시" 
	+ birth.getMinutes() + "분" 
	+ birth.getSeconds() + "초" + "<hr>");
내 생일시간 => 2020년12월25일8시20분30초

 

<예제3> 현재로부터 100일 후 출력하기

var baekil = [today.setDate( today.getDate() + 100 )];

document.write( " 100일 후 => " + baekil );
100일 후 => 1605245989947

Date 객체의 메모리 위치 주소값이 들어가게 되면 초로 출력된다. 년월일시분초로 나오게 하려면 <예제 2>처럼 해야 한다.

 

<예제4> 태어난 날부터 지금까지 얼마나 시간이 흘렀을까?

var today = new Date();
var birth = new Date(2020,11,25,8,20,30);

var interval = today.getTime() - birth.getTime()
var interval2 = (today.getTime() - birth.getTime())/(60*60*24) / 1000;
    
document.write( " 오늘까지 산 초수? => " + interval + "초" + "<br>");
document.write( " 오늘까지 산 일수? => " + interval2 + "일" + "<br>");
  오늘까지 산 초수? => 775290344283초
  오늘까지 산 일수? => 8973.267873645833일

getTime() : 1970.01.01부터 기준점까지 얼마나 지났는지?

-> 따라서 현재와 1970.01.01까지의 차이에서 생일과 1970.01.01까지의 차이를 빼면 현재와 생일의 차이가 나온다.

-> 일수를 구하기 위해 60초 * 60분 * 24시간으로 나누고, getTime은 *1000초 된 상태로 출력되므로 1000을 나눠준다.

 

<예제5> 태어난 날부터 지금까지 얼마나 시간이 흘렀을까?2025년 2월 마지막 날짜는?

var last_day = new Date(2025, 2, 0);
document.write( " 2025년 2월 마지막 날짜는? => " 
    + last_day.getFullYear() + "년" 
    + (last_day.getMonth()+1) + "월" 
    + last_day.getDate() + "일" + "<hr>");
2025년 2월 마지막 날짜는? => 2025년2월28일

3월 1일의 전날이 2월의 마지막 날짜이다. 0으로 두면 그 전날을 의미한다.

<참고> 2일 전이면 -1이다.

 

<예제6-1> 현재 년월일요일시분초 출력하기(조건문 사용)

var today = new Date();
function getWeek1( weekNo ) {	
	//방법1 조건문 사용
	if(WeekNo == 0){week = "일";}
	else if(WeekNo == 1){week = "월";}
	else if(WeekNo == 2){week = "화";}
	else if(WeekNo == 3){week = "수";}
	else if(WeekNo == 4){week = "목";}
	else if(WeekNo == 5){week = "금";}
	else if(WeekNo == 6){week = "토";}
	return week;
}


document.write( "현재시간 => " 
	+ today.getFullYear() + "년" 
	+ (today.getMonth()+1) + "월" 
	+ today.getDate() + "일" 
	+ getWeek1 ( today.getDay() ) + "요일" 
	+ today.getHours() + "시" 
	+ today.getMinutes() + "분" 
	+ today.getSeconds() + "초" + "<br>");

 

<예제6-2> 현재 년월일요일시분초 출력하기(2차원 배열 사용)

var today = new Date();
function getWeek1( weekNo ) {
	//방법2 2차원 배열로 인덱스번호 사용해서 사용
	var week = ["일", "월", "화", "수", "목", "금", "토" ];
	return week[weekNo];
}

document.write( "현재시간 => " 
	+ today.getFullYear() + "년" 
	+ (today.getMonth()+1) + "월" 
	+ today.getDate() + "일" 
	+ getWeek1 ( today.getDay() ) + "요일" 
	+ today.getHours() + "시" 
	+ today.getMinutes() + "분" 
	+ today.getSeconds() + "초" + "<br>");
현재시간 => 2020년8월5일수요일14시46분14초

요일을 출력하면 숫자가 출력된다. 따라서 번호가 우리가 알고 있는 월~일의 형식을 띌 수 있도록 function을 사용한다.

 

<예제6-3> 현재 년월일요일시분초 출력하기(객체 메모리 위치 주소값 사용)

//방법3 Date 객체의 메모리 위치 주소값을 사용하는 경우
function getWeek2( dateObj ) {
	var weekNo = dateObj.getDay();
    var week = ["일", "월", "화", "수", "목", "금", "토" ];
	return week[weekNo];
}

document.write( "현재시간2 => " 
	+ day.getFullYear() + "년" 
	+ (day.getMonth()+1) + "월" 
	+ day.getDate() + "일" 
	+ getWeek2 ( day ) + "요일" 
	+ day.getHours() + "시" 
	+ day.getMinutes() + "분" 
	+ day.getSeconds() + "초" + "<hr>");
현재시간2 => 2020년8월5일수요일14시46분14초

 

<예제7-1> 현재 날짜 시간을 "?년 ?월 ?일 (?) 오전/오후 ?시 ?분 ?초" 형식으로 출력하면?

	var today = new Date();
	var nowHour = today.getHours(); //오전오후 변수 선언

	function Hour( nowHour ) {
         if ( nowHour < 12  &&  nowHour  >= 0 ) {jeonhoo = '오전 ';} 
		 else {jeonhoo = '오후 ';} //12시 이전일 때 오전, 나머지 오후
		 return jeonhoo;
	}

	function getWeek3( weekNo ) {
		var week = ["일", "월", "화", "수", "목", "금", "토" ];
		return week[weekNo];

	}

	document.write( "현재시간3 => " 
	+ today.getFullYear() + "년 " 
	+ (today.getMonth()+1) + "월 " 
	+ today.getDate() + "일 (" 
	+ getWeek3 ( today.getDay() ) + ") "
	+ Hour( today.getHours() ) 
	+ today.getHours() + "시 " 
	+ today.getMinutes() + "분 " 
	+ today.getSeconds() + "초 " + "<hr>");
현재시간3 => 2020년 8월 5일 (수) 오후 15시 37분 32초

 

<예제7-2> 현재 날짜 시간을 "?년 ?월 ?일 (?) 오전/오후 ?시 ?분 ?초" 형식으로 출력하면?(변수 개별 선언)

//변수 선언
var today = new Date();
function getWeek1( weekNo ) {
	var week = ["일", "월", "화", "수", "목", "금", "토" ];
	return week[weekNo];
}

var year = today.getFullYear();
var month = today.getMonth()+1;
var date = today.getDate();
var week = getWeek1(today.getDay());
var ampm = "오전";
var hour = today.getHours();
var miniute =today.getMinutes();
var second = today.getSeconds();

//---------------------------------
//조건문으로 오전오후 설정
if (hour>12)
{hour = hour-12;
ampm = "오후"
}

//---------------------------------
//01, 02.. 형식으로 나올 수 있도록 설정
if (month<10){ month = "0" + month;}
if (date<10){ date = "0" + date;}
if (week<10){ week = "0" + week;}
if (hour<10){ hour = "0" + hour;}
if (miniute<10){ miniute = "0" + miniute;}
if (second<10){ second = "0" + second;}

//---------------------------
//결과 출력
	document.write( "현재시간4 => " 
	+ year + "년 " 
	+ month + "월 " 
	+ date + "일 (" 
	+ week + ") "
	+ ampm
	+ hour + "시 " 
	+ miniute + "분 " 
	+ second + "초 " + "<hr>");

변수 선언을 하게 되면 더 쉽게 할 수 있다.

반응형
LIST

댓글