GMT란?
Greenwich Mean Time의 줄임말이며
컴퓨터 언어에서는 GMT기준으로 시간을 알려준다.
GMT는 기준이 되는 시간. 1970년 1월 1일 UTC 자정과의 시간 차이를 밀리초 단위로 나타낸 것.
위의 사진에서 GMT-060 => GMT기준으로 6시간 빠르다는 의미.
GMT+0900 (한국 표준시)
let rightNow = new Date();
// 2021-10-11T15:30:44.998Z
let year = rightNow.getFullYear();
// 2021 => 주어진 날짜의 현지 시간 기준 연도를 반환
let month = rightNow.getMonth()+1;
// 10 => Date에서 현지 시간 기준 월(0–11)을 반환
let date = rightNow.getDate();
// 12 => Date에서 현지 시간 기준 일(1–31)을 반환
let day = rightNow.getDay();
// 2 => Date에서 현지 시간 기준 요일(0–6)을 반환
let currentHour = rightNow.getHours(); // 0
let currentMin = rightNow.getMinutes(); // 31
여기서 getMonth
메서드는 현재 달보다 1 작은 수를 반환 함.
Date.prototype.getTime()
getTime() 메서드는 표준시에 따라 지정된 날짜의 시간에 해당하는 숫자 값을 반환.
1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 경과 시간 (밀리 초)을 나타내는 숫자
var birthday = new Date(1994, 12, 10); // 월은 +1 =>1995.01.10
var copy = new Date();
birthday.getTime(); // 789663600000
Date.prototype.setFullYear()
현지 시간에 따라 지정된 날짜의 전체 연도를 설정
setFullYear(yearValue)
setFullYear(yearValue, monthValue)
setFullYear(yearValue, monthValue, dateValue)
yearValue
연도의 숫자 값을 지정하는 정수(예: 1995).
monthValue
1월부터 12월까지의 월을 나타내는 0에서 11 사이의 정수.
dateValue
날짜를 나타내는 1에서 31 사이의 정수.
monthValue
및 dateValue
매개 변수를 지정하지 않으면 getMonth()
및 getDate()
메서드 에서 반환된 값 이 사용된다.
이 함수는 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 birthYear = birth.getFullYear();// 년도 구하기
let day = new Date();
let dayYear = day.getFullYear();
let result = birth.setFullYear(dayYear); // birth 년도를 day년도로 지정
let age = dayYear - birthYear; // 년도끼리 뺀 값 => 나이
if(result > day){
return age--;
}else{
return age;
}
}
내가 푼 코드는 마지막 문제에서 계속 넘어가지 못했다.
이유는 return 을 if문 안에서 해줬기 때문이다.
function getWesternAge(birthday){
let birth = new Date(birthday);
let birthYear = birth.getFullYear();
let day = new Date();
let dayYear = day.getFullYear();
let result = birth.setFullYear(dayYear);
let age = dayYear - birthYear;
if(result > day){
age --;
}else{
age;
}
return age;
}
물론 구글링으로 도움을 받아서 푼 문제긴 하지만...
아무리 봐도 두 코드의 다른점을 알 수 없었다...
이번 문제로 어디에서 리턴을 해줘야 하는지 다시한번 생각 해 볼 수 있었다..