반응형
Date 객체 설명
Date 객체
자바스크립트의 표준 내장 객체
시간의 한 점을 플랫폼에 종속되지 않는 형태로 나타냄
1970년 1월 1일 UTC(국제표준시) 자정과의 시간 차이를 밀리초로 나타내는 정수 값을 담음
Date() 생성자
- 시간의 특정 지점을 나타내는 Date 객체
- 플랫폼에 종속되지 않는 형태로 생성
- Date 객체는 1970년 1월 1일 UTC(국제표준시) 자정으로부터 지난 시간을 밀리초로 나타내는 UNIX 타임 스탬프를 담음
const today = new Date();
console.log("new Date ===>>> " + today);
// new Date ===>>> Fri Aug 04 2023 13:53:27 GMT+0900 (한국 표준시)
Date 객체 메서드 (현재 날짜 시간 구하기)
Date.now()가 숫자가 이상하게 나오는 이유
이 포스팅을 작성하게 된 계기이다.
현재 시간이 보통 다른 프로그래밍 언어에서는 now를 사용하면 되는데 이상한 숫자가 나온다..
Date.now() 메서드에 대해 알아보자.
- now() 메소드는 UTC 기준으로 1970년 1월 1일 0시 0분 0초부터 현재까지 경과된 밀리초를 반환한다.
- 즉, 현재까지 경과된 밀리초를 숫자로 반환하기 때문에 우리가 원하는 형식의 날짜 시간 형태로 나오지 않는다.
- 이 메서드는 대개 특정 시간의 경과시간을 구할 때 주로 사용한다.
Date.now();
// 1519211809934
- Date.now()를 활용하여 시간 차이 확인하기
- 밀리세컨드이기 때문에 초로 환산하려면 나누기 1000을 하면 보기 편하게 볼 수 있다.
- 또한, 브라우저마다 정밀도가 살짝씩 차이나기 때문에 약간의 오차는 존재한다.
- 1초 지연(1000) > 네이버 웨일 브라우저 기준 실제 1.07초
// 시작 시간
const startTime = Date.now();
// 1초 지연
setTimeout(() => {
// 끝나는 시간
const endTime = Date.now();
// 시작 시간과 끝나는 시간으로 얼마나 걸리는지 시간 확인
const diffTime = endTime - startTime;
console.log("start:"+startTime+" end:"+endTime+" time difference:"+diffTime);
}, 1000);
// start:1691127210162 end:1691127211232 time difference:1070
현재 연/월/일/요일 구하기
- getFullYear()
- 주어진 날짜의 현지 시간 기준 연도를 반환
- 1000년과 9999년 사이의 네 자리 숫자 반환
- getYear() 메서드 대신 getFullYear() 메서드 사용을 권장하고 있음
- 이유는 전체 년도를 반환하지 않아 문제가 될 가능성이 존재 한다.
- 예를 들면 1900년도는 90을 반환하지만 2023년은 123을 반환한다.
- 자세한건 아래의 링크에서 확인 가능하다.
- 참고로 getYear() 메서드는 현재 Deprecated 된 메서드이다.
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getYear
const year = today.getFullYear(); // 년 (yyyy)
console.log("year ===>>> " + year);
// year ===>>> 2023
- getMonth()
- Date 객체의 '월' 값을 현지 시간에 맞춰 반환
- 0에서 11 사이의 정수 반환
- 월은 0부터 시작하므로 +1을 하여야 현재 월과 일치
const month = today.getMonth() + 1; // 월 (MM)
console.log("month ===>>> " + month);
// month ===>>> 8
- getDate()
- 주어진 날짜의 현지 시간 기준 일을 반환
- 1 이상 31 이하의 정수 반환
const date = today.getDate(); // 일 (dd)
console.log("date ===>>> " + date);
// date ===>>> 4
- getDay()
- 주어진 날짜의 현지 시간 기준 요일을 반환
- 0 이상 6 이하의 정수 반환
- 0은 일요일을 나타냄
- 1:월요일 / 2:화요일 / 3:수요일 / 4:목요일 / 5:금요일 / 6토요일
const day = today.getDay();
console.log("day ===>>> " + day); // 현재 요일 (현재 요일은 금요일)
// day ===>>> 5
현재 시/분/초/밀리초 구하기
- getHours()
- 주어진 날짜의 현지 시간 기준 시를 반환
- 0과 23 사이의 정수로 반환
const hours = today.getHours(); // 시 (hh)
console.log("hours ===>>> " + hours);
// hours ===>>> 13
- getMinutes()
- 주어진 날짜의 현지 시간 기준 분을 반환
- 0과 59 사이의 정수 반환
const minutes = today.getMinutes(); // 분 (mm)
console.log("minutes ===>>> " + minutes);
// minutes ===>>> 53
- getSeconds()
- 주어진 날짜의 현지 시간 기준 초를 반환
- 0에서 59 사이의 정수 반환
const seconds = today.getSeconds(); // 초 (ss)
console.log("seconds ===>>> " + seconds);
// seconds ===>>> 27
- getMilliseconds()
- 주어진 날짜의 현지 시간 기준 밀리초를 반환
- 0에서 999 사이의 정수 반환
const milliseconds = today.getMilliseconds(); // 밀리초 (fff)
console.log("milliseconds ===>>> " + milliseconds);
// milliseconds ===>>> 523
현재 시간을 특정 문자 형식으로 변경하기
위에서 설명한 메서드들을 이용하여 원하는 형식에 맞게 현재 시간을 가공할 수 있다.
간단하게 새로운 문자열 변수를 생성하여 해당 변수에 형식에 맞게 넣으면 된다.
이는 주로 시간을 기준으로 파일명을 저장할 때 특수 문자를 없애기 위해서 사용한다.
- 예시 - 'Fri Aug 04 2023 13:53:27' 파일명 저장시 콜론(:) 때문에 파일명으로 할 수 없음
// 현재 시간 저장
const today = new Date();
const year = today.getFullYear(); // 년 (yyyy)
const month = today.getMonth() + 1; // 월 (MM)
const date = today.getDate(); // 일 (dd)
const hours = today.getHours(); // 시 (hh)
const minutes = today.getMinutes(); // 분 (mm)
const seconds = today.getSeconds(); // 초 (ss)
const milliseconds = today.getMilliseconds(); // 밀리초 (fff)
// 현재 시간을 원하는 형식에 맞게 문자열 가공
const now = year+"-"+month+"-"+date+"-T"+hours+"-"+minutes+"-"+seconds+"-"+milliseconds;
console.log("now ===>>> " + now);
// now ===>>> 2023-8-4-T13-53-27-523
참고
반응형