JavaScript - Date Object: Mastering Time in Your Code

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 JavaScript에서 날짜의 fascinaiting 세상으로 뛰어들어 보겠습니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저는 Date 객체의 ins and outs를 안내해 드리겠습니다. 믿으세요, 이 수업이 끝나면 여러분은 경험 많은 사 cirque 공연자처럼 날짜를 다루게 될 것입니다!

JavaScript - Date

Date Object는 무엇인가요?

자, 구체적인 내용으로 넘어가기 전에 Date 객체에 대해 이해해 보겠습니다. JavaScript에서 Date 객체는 날짜와 시간을 다루는 데 사용되는 가장 중요한 도구입니다. 코드 안에 super-smart 시계를 갖는 것과 같은 거죠!

이렇게 생각해 보세요: 프로그램이 현재 시간을 알아야 하거나, 이벤트를 예약하거나, 무언가가 얼마나 오래 걸렸는지 계산해야 한다면, Date 객체는 여러분의 최고의 친구입니다. 이렇게 다재다능해서, 1776년 7월 4일이 무슨 요일이었는지도 알려줄 수 있습니다! (그날은 목요일이었어요.)

문법: Date 객체 생성

기본적인 내용부터 시작해 보겠습니다. Date 객체를 어떻게 생성할까요? 생각보다 간단합니다!

// 현재 날짜와 시간으로 새로운 Date 객체 생성
let currentDate = new Date();
console.log(currentDate);
// 출력: 예를 들어 "Fri May 14 2023 15:30:45 GMT+0000 (Coordinated Universal Time)"

// 특정 날짜와 시간으로 Date 객체 생성
let specificDate = new Date("2023-05-14T15:30:45");
console.log(specificDate);
// 출력: "Sun May 14 2023 15:30:45 GMT+0000 (Coordinated Universal Time)"

// 개별 구성 요소를 사용하여 Date 객체 생성
let customDate = new Date(2023, 4, 14, 15, 30, 45);
console.log(customDate);
// 출력: "Sun May 14 2023 15:30:45 GMT+0000 (Coordinated Universal Time)"

이 예제들에서 우리는 Date 객체를 다양한 방법으로 생성하고 있습니다. 첫 번째는 현재 날짜와 시간을 주고, 두 번째는 문자열로 날짜를 만들고, 세 번째는 날짜의 각 부분을 별도로 지정합니다.

기억하세요, JavaScript의 월은 zero-indexed입니다. 즉, 1월은 0, 2월은 1, 그리고 이런 식입니다. 프로그래머들 사이의 내부 유머 같아요!

Date 프로퍼티

믿을 수 없을 만큼, Date 객체는 공개된 프로퍼티가 없습니다. 마치 친구가 정보를 공유하기 위해 요청할 때만 정보를 공유하는 것처럼, 메서드를 사용하여 정보를 얻어야 합니다. 하지만 걱정하지 마세요, 곧 메서드에 대해 이야기하겠습니다!

Date 메서드: 정보 추출

이제 Date 객체에서 정보를 추출하는 데 도움이 되는 메서드를 살펴보겠습니다. 이 메서드들은 마치 시간 여행자처럼, 특정 정보를 우리에게 가져다줍니다.

let myDate = new Date("2023-05-14T15:30:45");

console.log(myDate.getFullYear()); // 출력: 2023
console.log(myDate.getMonth()); // 출력: 4 (5월은 5번째 월이지만 인덱스는 4입니다)
console.log(myDate.getDate()); // 출력: 14
console.log(myDate.getDay()); // 출력: 0 (0은 일요일, 1은 월요일 등)
console.log(myDate.getHours()); // 출력: 15
console.log(myDate.getMinutes()); // 출력: 30
console.log(myDate.getSeconds()); // 출력: 45

이 각 메서드는 날짜의 특정 부분을 추출합니다. 마치 친구에게 "이 år은 무엇이냐?" 또는 "오늘은 무슨 요일이냐?"고 물어보고 정확한 답을 얻는 것과 같습니다.

Date 메서드: 정보 설정

정보를 얻는 것과 마찬가지로, 정보를 설정할 수도 있습니다. 이 메서드들은 우리가 Date 객체를 수정할 수 있게 해줍니다.

let myDate = new Date("2023-05-14T15:30:45");

myDate.setFullYear(2024);
console.log(myDate); // 출력: Tue May 14 2024 15:30:45 GMT+0000 (Coordinated Universal Time)

myDate.setMonth(11); // 12월
console.log(myDate); // 출력: Sat Dec 14 2024 15:30:45 GMT+0000 (Coordinated Universal Time)

myDate.setDate(25);
console.log(myDate); // 출력: Wed Dec 25 2024 15:30:45 GMT+0000 (Coordinated Universal Time)

이 메서드들은 마치 시간 기계처럼, 우리가 다른 연도, 월, 또는 날짜로 이동할 수 있게 해줍니다.

Date 정적 메서드

정적 메서드는 Date 객체 자체에 속하는 메서드로, 개별 Date 인스턴스에 속하지 않습니다. 마치 Date 족의 지혜로운 노인처럼, 모든 이에게 귀중한 서비스를 제공합니다.

console.log(Date.now()); // 출력: 현재 타임스탬프(밀리초)
console.log(Date.parse("2023-05-14")); // 출력: 2023년 5월 14일의 타임스탬프

Date.now()는 현재 타임스탬프를 주고, Date.parse()는 날짜 문자열을 타임스탬프로 변환합니다. 이들은 계산과 비교에 매우 유용합니다.

모든 것을 통합한 예제

이제 Date 객체의 다양한 측면을 배운 만큼, 실제 상황에서 어떻게 사용할 수 있는지 보겠습니다.

예제 1: 나이 계산기

function calculateAge(birthDate) {
let today = new Date();
let birthDateObj = new Date(birthDate);
let age = today.getFullYear() - birthDateObj.getFullYear();
let monthDiff = today.getMonth() - birthDateObj.getMonth();

if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDateObj.getDate())) {
age--;
}

return age;
}

console.log(calculateAge("1990-05-14")); // 출력은 현재 날짜에 따라 달라집니다

이 함수는 사람의 생일을 기반으로 나이를 계산합니다. 월과 일을 고려하여 정확성을 유지합니다.

예제 2: 다운타임 타이머

function countdown(targetDate) {
let now = new Date().getTime();
let target = new Date(targetDate).getTime();
let difference = target - now;

let days = Math.floor(difference / (1000 * 60 * 60 * 24));
let hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
let minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
let seconds = Math.floor((difference % (1000 * 60)) / 1000);

console.log(`${days} 일, ${hours} 시간, ${minutes} 분, ${seconds} 초`);
}

countdown("2023-12-31"); // 새해 전야로의 다운타임

이 함수는 특정 날짜까지의 남은 시간을 계산하여 일, 시간, 분, 초로 출력합니다.

Date 메서드 표

여기서 몇 가지 흔히 사용되는 Date 메서드 표를 제공합니다:

메서드 설명
getFullYear() 연도(4자리) 가져오기
getMonth() 월(0-11) 가져오기
getDate() 월의 날짜(1-31) 가져오기
getDay() 주의 요일(0-6) 가져오기
getHours() 시간(0-23) 가져오기
getMinutes() 분(0-59) 가져오기
getSeconds() 초(0-59) 가져오기
setFullYear() 연도 설정
setMonth() 월 설정
setDate() 월의 날짜 설정
setHours() 시간 설정
setMinutes() 분 설정
setSeconds() 초 설정
toDateString() 날짜를 읽기 쉬운 문자열로 변환
toTimeString() 시간을 읽기 쉬운 문자열로 변환

이제 여러분은 JavaScript에서 날짜를 다루는 첫 걸음을 냈어요. 연습이 완벽을 만드는 것을 기억하며, 이 메서드들을 실험하고 자신만의 날짜 기반 프로젝트를 만들어 보세요. 누가 다음 큰 캘린더 앱을 만들까요!

이제 마무리하며, 날짜와 시간을 다루는 것은 종종 시간대와夏令시간으로 인해 어려울 수 있지만, 오늘 배운 지식으로 이러한 도전에 대비할 수 있습니다. 계속 코딩하고, 계속 배우고, 가장 중요한 것은 즐겁게 코드를 작성하세요!

Credits: Image by storyset