TIL_24_with Wecode 014 JavaScript about 날짜와 시간

JIEUN·2021년 2월 22일
0
post-thumbnail

🐪 날짜와 시간
날짜 객체를 호출하면 쉽게 시간과 날짜를 얻을 수 있다.
날짜 객체를 생성할 때는 다음과 같이 new 연산자 다음에 Date 생성자를 쓰면 된다.

var rightNow = new Date();
console.log(rightNow);
//결과는 Mon Feb 22 2021 00:11:23 GMT+0900 (대한민국 표준시)

아래와 같이 년, 월, 일, 시, 분, 초 까지 알 수 있다.

GMT란 Greenwich Mean Time의 줄임말이며 컴퓨터 언어에서는 GMT기준으로 시간을 알려준다.
위의 사진은 GMT기준으로 6시간 빠르다는 것이고, 한국은 아래와 같이 표시된다.
GMT+0900 (한국 표준시)
Date 객체로 현재 시간을 가져온 후,
Date 객체가 갖고 있는 함수로 각 날짜, 시간의 값을 가져올 수 있다.

let rightNow = new Date();
rightNow
//Mon Feb 22 2021 00:06:40 GMT+0900 (대한민국 표준시)
let year = rightNow.getFullYear();
year
//2021
let month = rightNow.getMonth()+1;
month
//2
let date = rightNow.getDate();
date
//22
let day = rightNow.getDay();
day
//1
let currentHour = rightNow.getHours();
currentHour
//0
let currentMin = rightNow.getMinutes();
currentMin
//6

new Date()가 반환된 rightNow를 그대로 사용하지 않는다.
Date 타입이 갖고 있는 메서드를 활용하여 값을 받아온다.

  • 주의
    getMonth 함수로 값을 받을 때, 현재 달보다 1 작은 값이 반환되므로 주의해야한다.
    또한 1초, 1초 시간이 흐른다고 해서 rightNow 에 담긴 시간 값이 변하지는 않는다.
    위의 코드 1번째 줄이 실행되는 순간의 현재 시간이 담기는 것 이다.

🐷 getTime

let rightNow = new Date();
let time = rightNow.getTime();
time
//결과 1613920444740

getTime 메서드로 날짜의 밀리초 표현을 반환할 수 있다.
지금의 시간이 밀리초로 표현된 것.
참고로, 기준이 되는 일자는 1970년 1월 1일이다.
1970년 1월 1일로부터 1613920444740 밀리초가 지났다는 의미.
이렇게 getTime함수로 반환된 숫자로 비교연산을 통해 언제가 더 과거인지 판단할 수 있다.

🐷 특정 날짜의 Date
특정 날짜를 매개변수로 넘겨주면, 해당 날짜의 Date를 반환 받을 수 있다.

let date1 = new Date('December 17, 2019 03:24:00');
let date2 = new Date('2019-12-17T03:24:00');
let date3 = new Date(2019, 5, 1);
date1
//결과 Tue Dec 17 2019 03:24:00 GMT+0900 (대한민국 표준시)
date2
//결과 Tue Dec 17 2019 03:24:00 GMT+0900 (대한민국 표준시)
date3
//결과 Sat Jun 01 2019 00:00:00 GMT+0900 (대한민국 표준시)

🐷 Assignment
미국을 비롯해 전세계 대부분의 나라들이 생일을 기준으로 나이를 계산 합니다. 쉽게 말해 미국은 태어나자마자 0살이고 생일을 지나야 비로소 한 살이 됩니다. 반면에 한국은 태어나자마자 1살이고 연도가 바뀔 때마다 한 살씩 먹습니다.
예를 들어 미국에서는 1995년 9월 12일에 태어났으면 1995년 9월 12일에는 0살이고 1996년 9월 12일이 되야 1살이 됩니다. 그에 비해 한국에서는 1995년 9월 12일에 태어나자마자 1살이고 1996년 1월 1일에 2살이 됩니다.
1살 차이도 크게 생각하는 우리나라 고유의 문화에 비롯한 계산법이 아닌가 추측해 봅니다. 미국이나 다른 나라가 사용하는 나이 계산법은 우리나라에서는 만 나이 라고 하죠.

  • 앞서 말한 만으로 계산한 나이를 구하는 함수인 getWesternAge 함수를 구현해 봅시다.
  • 이 함수는 birthday 라는 인자를 받고 이 birthday는 Date 객체입니다. birthday라는 인자를 넣었을 때, 현재를 기준으로 만으로 계산한 나이를 리턴 해주도록 구현해 봅시다. birthday는 string이 아닌 Date 객체라는 걸 명심하세요 :)
  • 예를 들어, 오늘이 2020년 7월 21일이고, birthday 값이 다음과 같다면:
1990-03-21T00:45:06.562Z
  • 리턴 값은 30 이 되어야 합니다.
function getWesternAge(birthday) {
  let birth = new Date(birthday);
  let today = new Date();
  let age = today.getFullYear() - birth.getFullYear();
  birth.setFullYear(today.getFullYear());
  if (today > birth) {
    age;
  } else {
    age--;
  } return age;
}

0개의 댓글