TIL 24 | 날짜와 시간

Moon ·2021년 7월 14일
0

Javascript

목록 보기
15/16
post-thumbnail

1. 날짜와 시간

FE는 현업에 가게되면 회원가입을 한 날짜와 시간, 글을 작성한 시간 혹은 휴대폰의 현재 시간 등 날짜와 시간을 다룰일이 많다. 따라서 다양한 날짜 객체를 사용하는 방법을 익히고자 한다.

날짜와 시간을 저장하고 보여줄 때 날짜 객체를 사용하는데 날짜 객체를 호출하면 시간과 날짜를 쉽게 얻을 수 있다.
날짜 객체를 생성할 때는 다음과 같이 new 연산자 다음에 Date 생성자를 쓴다.

var rightNow = new Date();
console.log(rightNow);

그리고 console.log 의 결과는 다음과 같다.

2019-02-18T00:45:06.562Z

그럼 이제 날짜 객체를 갖고 month, year, date등을 구해보자.

let rightNow = new Date();
let year = rightNow.getFullYear();
let month = rightNow.getMonth()+1; //month는 꼭 1을 더해줘야 한다는 사실을 잊지말자! 
let date = rightNow.getDate();
let day = rightNow.getDay();
let currentHour = rightNow.getHours();
let currentMin = rightNow.getMinutes();
 console.log(rightNow)
console.log(year)
console.log(month)
console.log(date)
// console.log(day) 0 for Sunday, 1 for Monday, 2 for Tuesday, and so on.
console.log(currentHour)
console.log(currentMin)

이제 날짜외에 new Date(); 객체를 가지고 시간을 구하는 방법도 익혀보자!

let rightNow = new Date() // 2021년 7월 14일 기준
let time = rightNow.getTime();
console.log(time) 

위의 값으로 1626257032982 (2021-07-14T10:04:06.667Z 기준)가 나왔는데 이 뜻은1970년 1월 1일로부터 1626256930675 밀리초가 지났다는 의미이다.

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 라는 인자를 받습니다.

  • birthdayDate 객체 입니다. birthday 라는 인자를 넣었을 때, 현재를 기준으로 만으로 계산한 나이를 리턴 해주세요.

  • birthday 는 string이 아닌 Date 객체라는 걸 명심하세요 :)

  • 예를 들어, 오늘이 2020년 7월 21일이고, birthday 값이 다음과 같다면:

    1990-03-21T00:45:06.562Z

    리턴 값은 30 이 되어야 합니다.

function getWesternAge(birthday) {
  let now = new Date();
  let birth = new Date(birthday);

  let birthMonth = birth.getMonth();
  let thisMonth = now.getMonth();

  let birthDate = birth.getDate();
  let thisDate = now.getDate();

  let year = now.getFullYear() - birth.getFullYear() ;
  let month = now.getMonth()+1 - birth.getMonth()+1 
  
  if(thisMonth < birthMonth){
   return year-1
  }
  
  else if(thisMonth > birthMonth){
    return year 
  }
  else if (thisMonth = birthMonth){
    if (thisDate >= birthDate){
      return year
    }
    else if(thisDate < birthDate){
      return year-1
    }
  }
}
getWesternAge();
profile
Welcome to my world! ☺️

0개의 댓글