날짜 객체를 호출하면 쉽게 시간과 날짜를 얻을 수 있습니다. 날짜 객체는 다음과 같이 new 연산자와 Date 생성자를 통해 생성할 수 있습니다.
const rightNow = new Date();
console.log(rightNow);
//2019-02-18T00:45:06.562Z 이러한 형태로 출력
이렇게 new Date() 를 통해 현재 시간을 가져온 후, 개발자가 개발에 활용하거나 사용자가 확인하기 편한 날짜의 형태로 변환해서 사용해야 하는데 아래 코드를 보면 알 수 있습니다.
const rightNow = new Date();
const year = rightNow.getFullYear(); // 현재 년도
const month = rightNow.getMonth()+1; // 월은 현재의 월보다 한달 적게 나오므로 +1, 현재 월
const date = rightNow.getDate(); // 현재 일
const day = rightNow.getDay(); // 현재 요일
const currentHour = rightNow.getHours(); // 현재 시간
const currentMin = rightNow.getMinutes(); // 현재 분
const rightNow = new Date();
const time = rightNow.getTime();
console.log(time);
// 대략 1672217159337 이러한 형태의 숫자값이 나올것이다.
위 코드에서 콘솔값의 의미는 1970년 1월 1일로부터 1672217159337 밀리초가 지났다는 것을 의미합니다. 만약 10분 뒤에 다시 새로 new Date() 를 호출하면, 시간이 조금 흘렀으니 위의 1672217159337 보다는 큰 숫자가 나올 것입니다.
이렇게 getTime 메소드로 반환된 숫자로 비교연산을 통해 언제가 더 과거인지 판단할 수 있습니다.
setFullYear() 메서드는 현지 시간에 따라 지정된 날짜의 전체 연도를 설정합니다. 새로운 타임스탬프(timestamp)를 반환합니다.
dateObj.setFullYear(yearValue[, monthValue[, dayValue]])
function getWesternAge(birthday){
let today = new Date(); // 오늘 년, 월, 일
let todayYear = today.getFullYear(); // 오늘 년
let birth = new Date(birthday); // 인자값(생년월일)의 년, 월, 일
let birthYear = birth.getFullYear(); // 인자값(생년월일)의 년
let thisYear = birth.setFullYear(todayYear);
// setFullYear로 생년월일중 년부분을 올해년으로 바꿔줌
let lastBirth = todayYear - birthYear
// 생일이 지난 만나이
if(today.getTime() < thisYear){ // for문의 내용에 대해서는 아래 내용 참고
return lastBirth-1; // 생일이 지나지 않은 만나이
}return lastBirth
}
console.log(getWesternAge('1990-11-30')) // 인자값 파라미터에 전달
// 32
for문관련 참고사항 : today의 timestamp값과 thisYear의 timestamp값(이미 위에서 setFullYear을 이용해 timestamp로 변경 됨)의 으로 비교해 조건문을 넣었고 조건문 내용은 지금시간(today)이 올해의 생일(thisYear)보다 작은경우(지난경우)의 조건문내용이고 timestamp값은 과거보다 미래가 더 크다.