[Pre-course] 날짜와 시간 reple 문제

yoonee·2021년 10월 11일
1

JavaScript

목록 보기
2/8
post-thumbnail

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 사이의 정수.

monthValuedateValue매개 변수를 지정하지 않으면 getMonth()getDate()메서드 에서 반환된 값 이 사용된다.

Assignment

이 함수는 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;
}

물론 구글링으로 도움을 받아서 푼 문제긴 하지만...
아무리 봐도 두 코드의 다른점을 알 수 없었다...
이번 문제로 어디에서 리턴을 해줘야 하는지 다시한번 생각 해 볼 수 있었다..

0개의 댓글