자바에서 날짜와 시간을 다루는 다양한 방법
1. 사전지식
자바에서는 날짜와 시간을 다루기 위해 다양한 클래스를 제공합니다. 과거에는 java.util.Date와 Calendar를 사용했지만, 자바 8 이후로는 java.time 패키지가 주로 사용됩니다. 이 패키지는 더 직관적이고 사용하기 쉬운 API를 제공하여 코드의 가독성과 유지보수성을 향상시킵니다.
날짜 작업에는 LocalDate, 날짜와 시간을 함께 다룰 때는 LocalDateTime, 날짜와 시간의 차이를 계산할 때는 Period와 Duration을 사용합니다. 최신 자바에서는 java.time 패키지를 사용하는 것이 좋습니다.
2. java.util.Date 클래스
자바에서 날짜를 다룰 때 가장 기본적으로 사용되는 클래스입니다. 그러나 이 클래스는 현재 거의 사용되지 않으며, 대신 java.time 패키지가 추천됩니다.
import java.util.Date;
public class DateExample {
public static void main(String[] args) {
// 현재 날짜와 시간을 가져옴
Date date = new Date();
// 현재 날짜와 시간을 출력
System.out.println("Current date: " + date);
}
}
3. java.util.Calendar 클래스
Calendar 클래스는 Date 클래스의 단점을 보완하기 위해 도입되었습니다. 날짜와 시간을 보다 정교하게 조작할 수 있습니다.
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
// 현재 날짜와 시간을 가져옴
Calendar calendar = Calendar.getInstance();
// 날짜에 하루를 추가
calendar.add(Calendar.DATE, 1);
// 추가된 날짜를 출력
System.out.println("Tomorrow's date: " + calendar.getTime());
}
}
4. java.time 패키지
자바 8부터 도입된 java.time 패키지는 날짜와 시간을 다루는 더 나은 방법을 제공합니다. 이 패키지는 현대적인 날짜 및 시간 API를 포함하고 있습니다.
4.1 LocalDate 클래스
LocalDate는 날짜(연도, 월, 일)를 나타내는 클래스입니다.
import java.time.LocalDate;
public class LocalDateExample {
public static void main(String[] args) {
// 현재 날짜를 가져옴
LocalDate today = LocalDate.now();
// 날짜에 하루를 추가
LocalDate tomorrow = today.plusDays(1);
// 현재 날짜와 추가된 날짜를 출력
System.out.println("Today's date: " + today);
System.out.println("Tomorrow's date: " + tomorrow);
}
}
4.2 LocalTime 클래스
LocalTime은 시간(시, 분, 초)을 나타내는 클래스입니다.
import java.time.LocalTime;
public class LocalTimeExample {
public static void main(String[] args) {
// 현재 시간을 가져옴
LocalTime now = LocalTime.now();
// 시간에 한 시간을 추가
LocalTime later = now.plusHours(1);
// 현재 시간과 추가된 시간을 출력
System.out.println("Current time: " + now);
System.out.println("One hour later: " + later);
}
}
4.3 LocalDateTime 클래스
LocalDateTime은 날짜와 시간을 함께 나타내는 클래스입니다.
import java.time.LocalDateTime;
public class LocalDateTimeExample {
public static void main(String[] args) {
// 현재 날짜와 시간을 가져옴
LocalDateTime now = LocalDateTime.now();
// 날짜와 시간에 하루와 두 시간을 추가
LocalDateTime future = now.plusDays(1).plusHours(2);
// 현재 날짜와 시간, 추가된 날짜와 시간을 출력
System.out.println("Current date and time: " + now);
System.out.println("Future date and time: " + future);
}
}
4.4 Period와 Duration 클래스
Period는 날짜 간의 차이를, Duration은 시간 간의 차이를 나타내는 클래스입니다.
import java.time.LocalDate;
import java.time.Period;
public class PeriodExample {
public static void main(String[] args) {
// 시작 날짜와 끝 날짜를 설정
LocalDate startDate = LocalDate.of(2023, 1, 1);
LocalDate endDate = LocalDate.of(2024, 1, 1);
// 두 날짜 간의 차이를 계산
Period period = Period.between(startDate, endDate);
// 차이를 출력
System.out.println("Period: " + period.getYears() + " years " + period.getMonths() + " months " + period.getDays() + " days");
}
}
import java.time.Duration;
import java.time.LocalTime;
public class DurationExample {
public static void main(String[] args) {
// 시작 시간과 끝 시간을 설정
LocalTime startTime = LocalTime.of(10, 0);
LocalTime endTime = LocalTime.of(12, 30);
// 두 시간 간의 차이를 계산
Duration duration = Duration.between(startTime, endTime);
// 차이를 출력
System.out.println("Duration: " + duration.toHours() + " hours " + duration.toMinutes() % 60 + " minutes");
}
}
5. java.time.format 패키지
날짜와 시간을 특정 형식으로 변환할 때 사용합니다.
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
// 포맷형을 정의합니다.
String dateFormatType = "yyyyMMdd";
// SimpleDateFormat 객체를 생성하고 포맷형을 설정합니다.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType);
// 현재 날짜를 구합니다.
Date now = new Date();
// 현재 날짜를 포맷형에 맞게 변환합니다.
String today = simpleDateFormat.format(now);
// 결과를 출력합니다.
System.out.println(today); // 예: 20240627
}
}
관련 글
2024.02.19 - [개발(Dev)/JAVA] - [JAVA]자바 날짜 계산: 특정 날짜, 일수 더하기, 일수 빼기, 개월 차 구하기 완벽 정리
2024.06.27 - [개발(Dev)/JAVA] - [JAVA]자바 날짜 계산: 자바 8 이전과 이후의 모든 방법
2024.06.28 - [개발(Dev)/JAVA] - [JAVA]자바 8 이전 날짜 계산 총정리: 특정 날짜 차이 계산
2024.06.27 - [개발(Dev)/JAVA] - [JAVA]자바 8 이후 날짜 계산 총정리: 특정 날짜 차이 계산
여기까지 읽어주셔서 진심으로 감사드립니다.
이 글이 마음에 드셨다면, 우측 아래 하트(공감)를 눌러 응원의 표시를 부탁드려요.
여러분의 소중한 관심과 사랑이 큰 힘이 됩니다. 감사합니다!
'개발(Dev) > JAVA' 카테고리의 다른 글
[JAVA]자바 8 이후 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이, 요일 구하기 (0) | 2024.06.30 |
---|---|
[JAVA]자바 8 이전 날짜 계산 총정리: 특정 날짜 빼기, 더하기, 차이, 요일 구하기 (0) | 2024.06.29 |
[JAVA]자바 날짜 계산: 특정 날짜, 일수 더하기, 일수 빼기, 개월 차 구하기 완벽 정리 (0) | 2024.02.19 |
자바 API 문서 (0) | 2024.02.16 |
이클립스와 톰캣에서 POST 요청 데이터 길이 제한을 해결하는 방법 (0) | 2024.02.16 |