add user agent parser and update build configuration
This commit is contained in:
142
docs/Date-Time API.md
Normal file
142
docs/Date-Time API.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# **자바 Date-Time API 쉽게 배우기**
|
||||
|
||||
## **1. Date-Time API란?**
|
||||
자바에서 날짜와 시간을 다루는 API는 크게 두 가지가 있다.
|
||||
1. `java.util.Date`, `java.util.Calendar` (구버전, 사용 비추천)
|
||||
2. `java.time` 패키지 (Java 8 이후, 최신 API)
|
||||
|
||||
Java 8부터 `java.time` 패키지가 추가되면서 날짜와 시간을 **더 직관적이고 강력하게 다룰 수 있게 되었다.**
|
||||
이번 글에서는 `java.time` 패키지를 중심으로 설명하겠다.
|
||||
|
||||
---
|
||||
|
||||
## **2. 주요 클래스 및 메서드 정리**
|
||||
|
||||
### **(1) `LocalDate` (날짜만 다루는 클래스)**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------|
|
||||
| `now()` | 현재 날짜 가져오기 |
|
||||
| `of(year, month, dayOfMonth)` | 특정 날짜 생성 |
|
||||
| `plusDays(n)`, `minusDays(n)` | n일 더하기 / 빼기 |
|
||||
| `getYear()`, `getMonth()`, `getDayOfMonth()` | 연도, 월, 일 가져오기 |
|
||||
| `isBefore(date)`, `isAfter(date)` | 날짜 비교 |
|
||||
|
||||
**예제 코드**
|
||||
```java
|
||||
LocalDate today = LocalDate.now();
|
||||
System.out.println(today); // 2025-03-06
|
||||
|
||||
LocalDate specificDate = LocalDate.of(2025, 12, 25);
|
||||
System.out.println(specificDate); // 2025-12-25
|
||||
|
||||
LocalDate nextWeek = today.plusDays(7);
|
||||
System.out.println(nextWeek); // 2025-03-13
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **(2) `LocalTime` (시간만 다루는 클래스)**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------|
|
||||
| `now()` | 현재 시간 가져오기 |
|
||||
| `of(hour, minute, second)` | 특정 시간 생성 |
|
||||
| `plusHours(n)`, `minusMinutes(n)` | 시간 또는 분 더하기 / 빼기 |
|
||||
| `getHour()`, `getMinute()`, `getSecond()` | 시, 분, 초 가져오기 |
|
||||
|
||||
**예제 코드**
|
||||
```java
|
||||
LocalTime now = LocalTime.now();
|
||||
System.out.println(now); // 14:30:15 (예시)
|
||||
|
||||
LocalTime meetingTime = LocalTime.of(10, 30);
|
||||
System.out.println(meetingTime); // 10:30
|
||||
|
||||
LocalTime afterOneHour = now.plusHours(1);
|
||||
System.out.println(afterOneHour); // 15:30:15 (예시)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **(3) `LocalDateTime` (날짜 + 시간)**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------|
|
||||
| `now()` | 현재 날짜와 시간 가져오기 |
|
||||
| `of(LocalDate, LocalTime)` | 특정 날짜와 시간 생성 |
|
||||
| `plusDays(n)`, `plusHours(n)` | 날짜/시간 더하기 |
|
||||
| `getYear()`, `getMonth()`, `getDayOfMonth()` | 날짜 정보 가져오기 |
|
||||
|
||||
**예제 코드**
|
||||
```java
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
System.out.println(now); // 2025-03-06T14:30:15 (예시)
|
||||
|
||||
LocalDateTime eventTime = LocalDateTime.of(2025, 12, 25, 18, 30);
|
||||
System.out.println(eventTime); // 2025-12-25T18:30
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **(4) `ZonedDateTime` (시간대 정보 포함)**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------|
|
||||
| `now(ZoneId.of("Asia/Seoul"))` | 특정 시간대의 현재 시간 가져오기 |
|
||||
| `of(year, month, day, hour, min, sec, ZoneId.of("UTC"))` | 특정 시간대의 날짜/시간 생성 |
|
||||
|
||||
**예제 코드**
|
||||
```java
|
||||
ZonedDateTime seoulTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
|
||||
System.out.println(seoulTime); // 2025-03-06T14:30:15+09:00[Asia/Seoul]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **(5) 날짜 포맷 변환 (`DateTimeFormatter`)**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------|
|
||||
| `ofPattern("yyyy-MM-dd HH:mm")` | 날짜/시간 형식 지정 |
|
||||
| `format(DateTimeFormatter formatter)` | 날짜/시간을 문자열로 변환 |
|
||||
| `parse(String, DateTimeFormatter formatter)` | 문자열을 날짜/시간으로 변환 |
|
||||
|
||||
**예제 코드**
|
||||
```java
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
||||
|
||||
String formattedDate = now.format(formatter);
|
||||
System.out.println(formattedDate); // 2025-03-06 14:30
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **(6) 날짜 차이 계산 (`Duration`, `Period`)**
|
||||
| 클래스 | 설명 |
|
||||
|--------|------------------------------|
|
||||
| `Duration.between(time1, time2)` | 시간 차이 계산 (초, 분, 시간 단위) |
|
||||
| `Period.between(date1, date2)` | 날짜 차이 계산 (년, 월, 일 단위) |
|
||||
|
||||
**예제 코드**
|
||||
```java
|
||||
LocalDate date1 = LocalDate.of(2025, 1, 1);
|
||||
LocalDate date2 = LocalDate.of(2025, 3, 6);
|
||||
|
||||
Period period = Period.between(date1, date2);
|
||||
System.out.println(period.getMonths() + "개월 " + period.getDays() + "일"); // 2개월 5일
|
||||
|
||||
LocalTime time1 = LocalTime.of(10, 0);
|
||||
LocalTime time2 = LocalTime.of(12, 30);
|
||||
|
||||
Duration duration = Duration.between(time1, time2);
|
||||
System.out.println(duration.toHours() + "시간 " + duration.toMinutes() + "분"); // 2시간 30분
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## **3. 정리**
|
||||
✅ **`LocalDate`** : 날짜만 다룸 (`2025-03-06`)
|
||||
✅ **`LocalTime`** : 시간만 다룸 (`14:30:15`)
|
||||
✅ **`LocalDateTime`** : 날짜 + 시간 (`2025-03-06T14:30:15`)
|
||||
✅ **`ZonedDateTime`** : 시간대 정보 포함 (`+09:00[Asia/Seoul]`)
|
||||
✅ **`DateTimeFormatter`** : 날짜 형식 변환 (`yyyy-MM-dd HH:mm`)
|
||||
✅ **`Period` / `Duration`** : 날짜/시간 차이 계산
|
||||
|
||||
자바의 `java.time` 패키지를 활용하면 **날짜와 시간을 더욱 쉽게 관리할 수 있다!**
|
||||
Reference in New Issue
Block a user