[JavaScript] 한국 시간 구하기

김진평·2023년 1월 9일
0

JavaScript

목록 보기
1/6
post-thumbnail

자바스크립트 시간 구하기

자바스크립트의 시간을 구하는 함수 new Date()를 하게되면
아래와 같은 값이 나온다.

//2023-01-10일 오전 02:44분 기준
const now = new Date();
console.log(now);	//2023-01-09-T17:44:32.756T

시간이 위 주석과 같이 나오는 이유는 컴퓨터 언어에서는 GMT(Greenwich Mean Time) 기준으로 시간을 알려주는데, 한국 시간은 GMT 기준 9시간이 빠르기 때문이다.

(아마 이 글을 보는 대부분의 사람들은 표준시간대가 한국 표준시(UTC+09:00)로 설정되어 있을 것이다.)

그렇다면 한국 시간은 어찌 구하는가?

한국 시간 구하기

1. UTC 시간 계산

const now = new Date();
const utc = now.getTime() + (now.getTimezoneOffset() * 60 * 1000);
//1673289904842 << 이런 형태의 값을 구할 수 있음

먼저 UTC 시간을 구한다.
UTC 시간이란 1970년 1월 1일로부터 현재까지 1673289904842 밀리초가 지났다는 뜻이다.

2. 한국 시간과의 시간(밀리초)차이 구하기

const koreaTimeDiff = 9 * 60 * 60 * 1000; 
// 한국 시간은 UTC보다 9시간 빠름(9시간의 밀리세컨드 표현)

한국 시간은 UTC보다 9시간 빠르기 때문에 UTC <-> 한국 시간간 차이를 밀리세컨드로 구한다.

3. UTC밀리초 + 한국시간 밀리초 더한 Date함수 호출

const korNow = new Date(utc+koreaTimeDiff)

위에서 구한 UTC와 한국 시간 밀리초를 더해 Date함수를 호출한다.

★ 한국 시간 구하는 코드

const now = new Date();
const utc = now.getTime() + (now.getTimezoneOffset() * 60 * 1000);
const koreaTimeDiff = 9 * 60 * 60 * 1000;
const korNow = new Date(utc+koreaTimeDiff);

★ 만 나이 구하기

function getWesternAge(birthday) {
  
  //한국 시간 구하기
  const now = new Date();
  const utc = now.getTime() + (now.getTimezoneOffset() * 60 * 1000);
  const koreaTimeDiff = 9 * 60 * 60 * 1000;
  const korNow = new Date(utc+koreaTimeDiff);

  const birthYMD = [String(birthday.getFullYear()), String(birthday.getMonth()+1), String(birthday.getDate())]
  const nowYMD = [String(korNow.getFullYear()), String(korNow.getMonth()+1), String(korNow.getDate())]
  console.log(birthYMD, nowYMD)

  //태어난 월, 일이 현재 월, 일보다 크거나 같으면 만 나이 계산
  //한국은 1살부터 시작이기 때문에 
  //오늘 날짜가 생일을 지났으면 현재연도 - 출생연도 -1, 그렇지 않으면 -2
  if(birthYMD[2] >= nowYMD[2] && birthYMD[1] >= nowYMD[1]) {
    return nowYMD[0] - birthYMD[0] -1;
  } else {
    return nowYMD[0] - birthYMD[0] -2;
  }
}

console.log(getWesternAge(new Date("1993-11-23T00:45:06.562Z")))
//결과 : 29

0개의 댓글