오래전부터 제공되던 Date클래스를 보완하기 위해 Calendar 클래스가 등장.
Calendar와 GregorianCalendar
GregorianCalendar는 Calendar를 상속받아 구현한 전세계 공통 그레고리력에 맞게 구현한것.
// Calendar를 사용하여 현재 날짜 및 시간 가져오기
Calendar calendar = Calendar.getInstance();
System.out.println("Calendar - 현재 날짜 및 시간: " + calendar.getTime());
//Calendar - 현재 날짜 및 시간: Mon Dec 27 12:34:56 UTC 2023
GregorianCalendar gregorianCalendar = new GregorianCalendar();
System.out.println("GregorianCalendar - 현재 날짜 및 시간: " + gregorianCalendar.getTime());
//GregorianCalendar - 현재 날짜 및 시간: Mon Dec 27 12:34:56 UTC 2023
GregorianCalendar를 통해 특정 날짜를 설정할 수도 있다.
// GregorianCalendar를 사용하여 특정 날짜로 설정 (년, 월, 일)
int year = 2023;
int month = Calendar.JANUARY; // 월은 0부터 시작
int dayOfMonth = 1;
Calendar specificDate = new GregorianCalendar(year, month, dayOfMonth);
System.out.println("GregorianCalendar - 특정 날짜: " + specificDate.getTime());
//GregorianCalendar - 특정 날짜: Sun Jan 01 00:00:00 UTC 2023
Date관련 작성할 수 있는 메서드를 확인해보자.
boolean isLeapYear(int year)
해당연도가 윤년인지 확인
public class LeapYearExample {
public static void main(String[] args) {
int year = 2023;
boolean isLeapYear = isLeapYear(year);
System.out.println(year + "년은 윤년인가? " + isLeapYear);
}
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
//2023년은 윤년인가? false
https://standout.tistory.com/1223
int dayDiff(int y1, int m1, int d1, int y2, int m2, int d2)
두 날짜간의 일수 차이를 계산하다.
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DayDifferenceExample {
public static void main(String[] args) {
int year1 = 2022, month1 = 12, day1 = 1;
int year2 = 2023, month2 = 1, day2 = 1;
int dayDiff = dayDiff(year1, month1, day1, year2, month2, day2);
System.out.println("두 날짜 간의 일 수 차이: " + dayDiff);
}
public static int dayDiff(int y1, int m1, int d1, int y2, int m2, int d2) {
LocalDate date1 = LocalDate.of(y1, m1, d1);
LocalDate date2 = LocalDate.of(y2, m2, d2);
return (int) ChronoUnit.DAYS.between(date1, date2);
}
}
//두 날짜 간의 일 수 차이: 31
int getDayOfWeek(int year, int month, int day)
특정날짜의 요일을 도출하다
import java.time.DayOfWeek;
import java.time.LocalDate;
public class DayOfWeekExample {
public static void main(String[] args) {
int year = 2023, month = 1, day = 1;
int dayOfWeek = getDayOfWeek(year, month, day);
System.out.println(year + "년 " + month + "월 " + day + "일은 " + dayOfWeek + "요일");
}
public static int getDayOfWeek(int year, int month, int day) {
LocalDate date = LocalDate.of(year, month, day);
DayOfWeek dayOfWeek = date.getDayOfWeek();
return dayOfWeek.getValue(); // 1: 월요일, 2: 화요일, ..., 7: 일요일
}
}
//2023년 1월 1일은 7요일
String convertDayToDate(int day)
일수를 날짜로 변환한다.
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateConverter {
public static void main(String[] args) {
// 예시: 100일 후의 날짜 출력
int days = 100;
String convertedDate = convertDayToDate(days);
System.out.println("Converted date after " + days + " days: " + convertedDate);
}
// 일수를 날짜로 변환하는 함수
public static String convertDayToDate(int day) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, day);
Date convertedDate = calendar.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(convertedDate);
}
}
//Converted date after 100 days: 2024-04-05
int convertDate ToDay(int year, int month, int day)
년, 월, 일을 입력받아 해당 날짜까지의 총 일수를 계산한다.
import java.util.Calendar;
public class DateConverter {
public static void main(String[] args) {
// 예시: 2022년 3월 15일까지의 총 일수 출력
int year = 2022;
int month = 3;
int day = 15;
int totalDays = convertDateToDay(year, month, day);
System.out.println("Total days until " + year + "-" + month + "-" + day + ": " + totalDays + " days");
}
// 날짜를 일수로 변환하는 함수
public static int convertDateToDay(int year, int month, int day) {
Calendar targetDate = Calendar.getInstance();
targetDate.set(year, month - 1, day); // month는 0부터 시작하므로 -1 해줌
Calendar currentDate = Calendar.getInstance();
// 현재 날짜부터 목표 날짜까지의 차이를 일수로 계산
long diffMillis = targetDate.getTimeInMillis() - currentDate.getTimeInMillis();
int totalDays = (int) (diffMillis / (24 * 60 * 60 * 1000));
return totalDays;
}
}
//Total days until 2022-3-15: 721 days
'JAVA' 카테고리의 다른 글
SimpleDateFormat, Date와 Calendar보다 쉽게 날짜 형식 지정하기 (0) | 2023.12.28 |
---|---|
DecimalFormat, 숫자데이터를 다양한 형식으로 표현하다 (0) | 2023.12.28 |
java.math.BigDecimal, double타입보다 오차가 없도록 2진수로 변환해 수를 다루다 (0) | 2023.12.26 |
java.math.BigInteger long보다 큰 정수값을 계산할때 (0) | 2023.12.26 |
String.split()의 구식 api, java.util.StringTokenizer (0) | 2023.12.26 |