게으른 개발자의 끄적거림

JavaScript 날짜 완벽 정리(한달 전, 1년 전, 어제, 내일 등)

끄적잉 2024. 6. 11. 22:04
반응형

 

 JavaScript에서 날짜와 시간을 다루는 것은 매우 일반적인 작업이며, 이를 위해 `Date` 객체를 사용합니다. 이 객체는 날짜와 시간에 대한 정보를 저장하고 조작하는 데 유용한 다양한 메서드를 제공합니다. 이 글에서는 JavaScript에서 현재 날짜, 어제 날짜, 내일 날짜, 한 달 전 날짜, 일 년 전 날짜를 구하는 방법에 대해 상세히 설명하겠습니다.

 

### 1. `Date` 객체 생성 및 현재 날짜 구하기

`Date` 객체는 JavaScript에서 날짜와 시간을 처리하는 기본적인 방법입니다. 새로운 `Date` 객체를 생성하면 현재 날짜와 시간을 나타내는 객체가 만들어집니다.

```javascript
const today = new Date();
console.log(today); // 현재 날짜와 시간 출력
```

이 객체는 생성 시점의 날짜와 시간을 포함합니다. 특정 날짜를 출력하기 위해 `toLocaleDateString()` 메서드를 사용할 수 있습니다.

```javascript
console.log(today.toLocaleDateString()); // 현재 날짜 출력 (예: 2024-06-11)
```

 


### 2. 어제 날짜 구하기

어제 날짜를 구하려면 `Date` 객체의 날짜 값을 하나 감소시키면 됩니다. `setDate()` 메서드를 사용하여 현재 날짜에서 하루를 빼줍니다.

```javascript
const yesterday = new Date();
yesterday.setDate(today.getDate() - 1);
console.log(yesterday.toLocaleDateString()); // 어제 날짜 출력
```

`setDate()` 메서드는 날짜를 설정하며, 인자로 현재 날짜에서 1을 뺀 값을 넣어주면 어제 날짜를 설정할 수 있습니다.

 


### 3. 내일 날짜 구하기

내일 날짜를 구하는 방법도 어제 날짜를 구하는 방법과 유사합니다. 현재 날짜에서 하루를 더해주면 됩니다.

```javascript
const tomorrow = new Date();
tomorrow.setDate(today.getDate() + 1);
console.log(tomorrow.toLocaleDateString()); // 내일 날짜 출력
```

반응형


### 4. 한 달 전 날짜 구하기

한 달 전 날짜를 구할 때는 현재 월에서 1을 빼면 됩니다. `setMonth()` 메서드를 사용하여 이를 구현할 수 있습니다.

```javascript
const oneMonthAgo = new Date();
oneMonthAgo.setMonth(today.getMonth() - 1);
console.log(oneMonthAgo.toLocaleDateString()); // 한 달 전 날짜 출력
```

하지만 이 방법은 월의 마지막 날을 처리할 때 문제가 생길 수 있습니다. 예를 들어, 3월 31일에서 한 달을 빼면 2월 28일 또는 29일이 될 수 있습니다. 이러한 경우를 처리하기 위해서는 좀 더 복잡한 로직이 필요할 수 있습니다.

 

 


### 5. 일 년 전 날짜 구하기

일 년 전 날짜를 구하는 방법도 한 달 전 날짜를 구하는 방법과 유사합니다. 이번에는 `setFullYear()` 메서드를 사용하여 현재 연도에서 1을 뺍니다.

```javascript
const oneYearAgo = new Date();
oneYearAgo.setFullYear(today.getFullYear() - 1);
console.log(oneYearAgo.toLocaleDateString()); // 일 년 전 날짜 출력
```

 

 


### 날짜 조작을 위한 유틸리티 함수 작성

위의 내용을 바탕으로 날짜를 조작하는 유틸리티 함수를 작성하면, 코드 재사용성과 가독성을 높일 수 있습니다.

```javascript
function getFormattedDate(date) {
    return date.toLocaleDateString();
}

function getYesterday() {
    const date = new Date();
    date.setDate(date.getDate() - 1);
    return getFormattedDate(date);
}

function getTomorrow() {
    const date = new Date();
    date.setDate(date.getDate() + 1);
    return getFormattedDate(date);
}

function getOneMonthAgo() {
    const date = new Date();
    date.setMonth(date.getMonth() - 1);
    return getFormattedDate(date);
}

function getOneYearAgo() {
    const date = new Date();
    date.setFullYear(date.getFullYear() - 1);
    return getFormattedDate(date);
}

console.log("어제 날짜:", getYesterday());
console.log("내일 날짜:", getTomorrow());
console.log("한 달 전 날짜:", getOneMonthAgo());
console.log("일 년 전 날짜:", getOneYearAgo());
```

### 다양한 날짜 형식 출력

JavaScript는 다양한 날짜 형식을 출력할 수 있는 기능을 제공합니다. 예를 들어, `toLocaleDateString()` 메서드는 인자로 로케일 문자열을 받아서 해당 국가의 형식에 맞게 날짜를 출력할 수 있습니다.

```javascript
console.log(today.toLocaleDateString('en-US')); // MM/DD/YYYY 형식
console.log(today.toLocaleDateString('ko-KR')); // YYYY-MM-DD 형식
```

또한, `Intl.DateTimeFormat` 객체를 사용하여 더욱 세밀한 형식 설정이 가능합니다.

```javascript
const options = { year: 'numeric', month: 'long', day: 'numeric' };
console.log(new Intl.DateTimeFormat('en-US', options).format(today)); // 예: June 11, 2024
console.log(new Intl.DateTimeFormat('ko-KR', options).format(today)); // 예: 2024년 6월 11일
```

### 날짜 계산 시 주의사항

날짜 계산 시 주의할 몇 가지 사항이 있습니다. 특히 월 말일을 기준으로 날짜를 계산할 때는 예기치 않은 결과가 나올 수 있습니다. 예를 들어, 1월 31일에서 한 달을 더하면 2월 28일 또는 29일이 됩니다. 이러한 문제를 방지하기 위해 날짜 계산 라이브러리인 `moment.js`나 `date-fns`를 사용할 수 있습니다.

### `moment.js` 라이브러리를 사용한 날짜 계산

`moment.js`는 날짜와 시간을 다루기 위한 강력한 라이브러리입니다. 이 라이브러리를 사용하면 날짜 계산이 더욱 직관적이고 간편해집니다.

```javascript
const moment = require('moment');

const todayMoment = moment();
console.log(todayMoment.format('YYYY-MM-DD')); // 현재 날짜 출력

const yesterdayMoment = todayMoment.clone().subtract(1, 'days');
console.log(yesterdayMoment.format('YYYY-MM-DD')); // 어제 날짜 출력

const tomorrowMoment = todayMoment.clone().add(1, 'days');
console.log(tomorrowMoment.format('YYYY-MM-DD')); // 내일 날짜 출력

const oneMonthAgoMoment = todayMoment.clone().subtract(1, 'months');
console.log(oneMonthAgoMoment.format('YYYY-MM-DD')); // 한 달 전 날짜 출력

const oneYearAgoMoment = todayMoment.clone().subtract(1, 'years');
console.log(oneYearAgoMoment.format('YYYY-MM-DD')); // 일 년 전 날짜 출력
```

### `date-fns` 라이브러리를 사용한 날짜 계산

`date-fns`는 가벼운 날짜 유틸리티 라이브러리로, 함수형 프로그래밍 스타일을 지원합니다.

```javascript
const { format, subDays, addDays, subMonths, subYears } = require('date-fns');

const todayDateFns = new Date();
console.log(format(todayDateFns, 'yyyy-MM-dd')); // 현재 날짜 출력

const yesterdayDateFns = subDays(todayDateFns, 1);
console.log(format(yesterdayDateFns, 'yyyy-MM-dd')); // 어제 날짜 출력

const tomorrowDateFns = addDays(todayDateFns, 1);
console.log(format(tomorrowDateFns, 'yyyy-MM-dd')); // 내일 날짜 출력

const oneMonthAgoDateFns = subMonths(todayDateFns, 1);
console.log(format(oneMonthAgoDateFns, 'yyyy-MM-dd')); // 한 달 전 날짜 출력

const oneYearAgoDateFns = subYears(todayDateFns, 1);
console.log(format(oneYearAgoDateFns, 'yyyy-MM-dd')); // 일 년 전 날짜 출력
```

### 결론

JavaScript에서 날짜와 시간을 다루는 방법은 매우 다양하며, `Date` 객체를 직접 사용하는 방법부터 `moment.js`나 `date-fns`와 같은 라이브러리를 활용하는 방법까지 여러 가지가 있습니다. 기본적인 날짜 계산은 `Date` 객체의 메서드를 통해 간단하게 구현할 수 있으며, 복잡한 날짜 계산은 라이브러리를 활용하면 더욱 편리하게 처리할 수 있습니다.

반응형

'게으른 개발자의 끄적거림' 카테고리의 다른 글

HTTP 406 error 해결방법  (0) 2024.06.12
File이란?? (개념, 종류, 구조 등)  (0) 2024.06.11
Http requestwrapper란?  (0) 2024.06.10
Java this와 this() 차이점  (1) 2024.06.04
Java instanceof란?  (0) 2024.05.30