가장 오래 걸린 만 나이 계산 문제🤤 그래도 다 풀고 나니 뿌듯하다!!
처음에 조건식을 한 줄로 작성하다가 조건식을 추가하면서 반환값을 맞추기 시작했다.
날짜를 이것저것 넣어 실행해보는데 어떤 날짜는 맞고 어떤 날짜는 틀리기를 반복하여 애꿎은 조건식만 계속 수정하다가
if와 else if의 조건식 자리를 서로 바꿔주었더니 해결되었다 : )
function getWesternAge(birthday) {
const today = new Date(); //2023-7-13 기준
const birth = new Date(birthday);
const yyyy = today.getFullYear() - birth.getFullYear();
const todayMm = today.getMonth();
const birthMm = birth.getMonth();
const mm = todayMm - birthMm;
const dd = today.getDate() - birth.getDate();
if (yyyy > 0 && todayMm <= birthMm && dd < 0) {
return yyyy - 1;
} else if (today > birth) {
return yyyy;
} else {
return 0;
}
}
console.log(getWesternAge('2023-1-1')) //0
console.log(getWesternAge('2022-7-13')) //1
console.log(getWesternAge('1992-7-14')) //30
우선 정의할 값들을 생각하며 선언해주고 if문으로 명령어들을 나열하였다.
컴퓨터는 코드를 위에서부터 순서대로 실행하는 순차구조라는 것을 더 빨리 생각했더라면 시간을 단축할 수 있었을 것 같다.
Date 객체로 현재 시각을 출력하고 그 안의 함수로 날짜와 시간의 값을 나타낼 수 있다.
input | remarks | |
현재시각 | const rightNow = new Date(); | |
연도 | const year = rightNow.getFullYear(); | |
월 | const month = rightNow.getMonth() + 1; | 0 = 1월 |
일 | const date = rightNow.getDate(); | |
요일 | const day = rightNow.getDay(); | 0 = 일요일 |
시간 | const currentHour = rightNow.getHours(); | 0~23의 시간 |
분 | const currentMin = rightNow.getMinutes(); | 0~59의 분 |
밀리초 | const time = rightNow.getTime(); | 1970-01-01로부터 지난 밀리초 |
특정 날짜도 반환할 수 있다.
input | output |
const date1 = new Date('December 25, 2016 01:01:00'); | 2016-12-25T01:01:00.000Z |
const date2 = new Date('2017-12-31T03:24:00'); | 2017-12-31T03:25:00.000Z |
const date3 = new Date(2018, 1, 1); | 2018-02-01T00:00:00.000Z |
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] 배열의 반복문|map, forEach (w.Arrow function) (0) | 2023.07.15 |
---|---|
[JavaScript] 객체지향 프로그래밍 Class (0) | 2023.07.14 |
[JavaScript] String과 Number의 조합과 변환 (0) | 2023.07.12 |
[JavaScript] 매개변수(parameter)와 인자(argument) (0) | 2023.07.11 |
[JavaScript] var | let | const 의 차이 (0) | 2023.07.10 |