JavaScript - 날짜, 시간

HYUK·2022년 12월 28일
0

1. new Date()

날짜 객체를 호출하면 쉽게 시간과 날짜를 얻을 수 있습니다. 날짜 객체는 다음과 같이 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(); // 현재 분

2. getTime()

const rightNow = new Date();
const time = rightNow.getTime();

console.log(time);
// 대략 1672217159337 이러한 형태의 숫자값이 나올것이다.

위 코드에서 콘솔값의 의미는 1970년 1월 1일로부터 1672217159337 밀리초가 지났다는 것을 의미합니다. 만약 10분 뒤에 다시 새로 new Date() 를 호출하면, 시간이 조금 흘렀으니 위의 1672217159337 보다는 큰 숫자가 나올 것입니다.
이렇게 getTime 메소드로 반환된 숫자로 비교연산을 통해 언제가 더 과거인지 판단할 수 있습니다.

3. setFullYear()

setFullYear() 메서드는 현지 시간에 따라 지정된 날짜의 전체 연도를 설정합니다. 새로운 타임스탬프(timestamp)를 반환합니다.

dateObj.setFullYear(yearValue[, monthValue[, dayValue]])
  • yearValue : 연도의 숫자 값을 지정하는 정수입니다 (예 : 1995).
  • monthValue : 1 월에서 12 월까지의 월을 나타내는 0에서 11 사이의 정수입니다.
  • dayValue : 한 달의 날짜를 나타내는 1 - 31 사이의 정수입니다. dayValue 매개 변수를 지정하는 경우 monthValue도 지정해야합니다.

Assignment

만 나이를 구하는 함수인 getWesternAge 함수를 구현해 봅시다.

  • 이 함수는 birthday 라는 인자를 받습니다.
  • 이 birthday 는 Date 객체 입니다. birthday 라는 인자를 넣었을 때, 현재 기준 만으로 계산한 나이를 반환해주세요.
  • birthday 는 string이 아닌 Date 객체라는 걸 주의해주세요.
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값은 과거보다 미래가 더 크다.

profile
step by step

0개의 댓글