JAVA 유용한 클래스

(JAVA)Java.time 패키지 - 11

mynote6676 2025. 5. 14. 18:39

- Date 클래스 Java 1.0부터 제공된 기본 날짜 /시간 클래스, 특정 시점(밀리초 단위)을 표현

- Calendar 클래스 Java1.1에서 Date의 단점을 개선하려 도입. 연/월/일 단위 조작 가능.

 

package time;

import java.util.Calendar;
import java.util.Date;

public class oldDateExample {

    public static void main(String[] args) {

        Date now = new Date();
        System.out.println("현재 시간 : " + now);

        //직접 개발자가 못하게 막아 놓았다.
        //Calendar cal = new Calendar();
        Calendar cal = Calendar.getInstance();
        cal.set(2025, 4, 14); // month는 0부터 시작(5월 = 4 월가 같다.) 가독성을 해침
        System.out.println("설정된 날짜 : " + cal.getTime());

    } // end of main


} // end of class

1. java.time 핵심 클래스

더보기

핵심클래스

하고 싶은 일 클래스  예시
날짜만  LocalDate LocalDate.now() -> 2025-05-13
시간만 LocalTime LocalTime.now() ->12:00:00
날짜 + 시간 LocalDateTime LocalDateTime.now() -> 2025-05
13T12:00:00
날짜 간격 Period Period.between(date1,date2)->
3년 2개월
시간 간격 Duration Duration.between(time1 , time2)
->2시간 30분

장점

-멀티스레드 안전

-직관적 API: 메소드명 명확(예 : plusDays, minusYears)

- 시간대 지원 : 글로벌 앱에 최적화

- 유연한 포멧팅 : 원하는 형식으로 출력 가능

 

2. 실습 

더보기

오늘 날짜와 시간 출력

import java.time.LocalDate;      // 날짜만 다루기 위한 클래스
import java.time.LocalDateTime; // 날짜와 시간을 함께 다루기 위한 클래스

public class TimeTravel{
	public static void main(String[] arge){
    // 현재 날짜를 가져옴 (예: 2025-05-13)
    LocalDate today = LocalDate.now();
    // 오늘 날짜를 콘솔에 출력
        System.out.println("오늘 날짜: " + today);

	// 현재 날짜와 시간을 가져옴 (예: 2025-05-13T12:00:00)
    LocalDateTime now = LocakDate.now();
    // 현재 날짜와 시간을 콘솔에 출력
            System.out.println("현재 시간: " + now);
    }
}

 

생일 요일 확인

 

import java.time.LocalDate; // 날짜를 다루기 위한 Java 시간 API 클래스

/**
 * 특정 날짜(2000년 5월 12일)의 요일을 출력하는 예제
 * LocalDate 클래스를 사용해 날짜를 생성하고, getDayOfWeek로 요일을 확인
 */
public class BirthdayDayOfWeek {
    public static void main(String[] args) {
        // 2000년 5월 12일을 나타내는 LocalDate 객체 생성
        // LocalDate.of(년, 월, 일): 특정 날짜를 지정해 날짜 객체를 만듦
        LocalDate birthday = LocalDate.of(2000, 5, 12);

        // getDayOfWeek(): 해당 날짜의 요일을 반환 (예: MONDAY, TUESDAY 등)
        // 요일은 영어로 출력되며, DayOfWeek 열거형으로 반환됨
        System.out.println("2000년 생일 요일: " + birthday.getDayOfWeek());
        // 예상 출력: 2000년 생일 요일: FRIDAY
        // (2000년 5월 12일은 실제로 금요일이었음)
    }
}

100일 후 날짜 계산

 

import java.time.LocalDate; // 날짜를 다루기 위한 Java 시간 API 클래스

/**
 * 현재 날짜로부터 100일 후의 날짜를 계산하고 출력하는 예제
 * LocalDate 클래스의 plusDays 메서드를 사용해 날짜를 조작
 */
public class After100Days {
    public static void main(String[] args) {
        // 현재 날짜를 가져옴 (예: 2025-05-13)
        // LocalDate.now(): 시스템의 현재 날짜를 반환
        LocalDate today = LocaDate.now();
        
        // 현재 날짜에 100일을 더해 새로운 날짜를 계산
        // plusDays(일수): 지정한 일수만큼 날짜를 증가시킴
        LocalDate after100Days = today.plusDays(100);
        
        // 100일 후의 날짜를 출력
        // LocalDate 객체는 기본적으로 yyyy-MM-dd 형식으로 출력됨
        System.out.println("100일 후: " + after100Days)
             // 예상 출력: 100일 후: 2025-08-21
        // (2025년 5월 13일에서 100일 후는 2025년 8월 21일)
    }
}

나이 계산

import java.time.LocalDate; // 날짜를 다루기 위한 Java 시간 API 클래스
import java.time.Period;   // 날짜 간격(연/월/일)을 계산하기 위한 클래스

/**
 * 생일과 현재 날짜를 비교해 나이를 계산하는 예제
 * LocalDate와 Period 클래스를 사용해 연도 단위의 나이를 출력
 */
public class AgeCalculation {
    public static void main(String[] args) {
        // 2000년 5월 12일을 나타내는 LocalDate 객체 생성
        // LocalDate.of(년, 월, 일): 특정 날짜를 지정해 날짜 객체를 만듦
        LocalDate birth = LocalDate.of(2000, 5, 12);

        // 현재 날짜를 가져옴 (예: 2025-05-13)
        // LocalDate.now(): 시스템의 현재 날짜를 반환
        LocalDate today = LocalDate.now();

        // 생일과 오늘 사이의 기간을 계산
        // Period.between(시작, 끝): 두 날짜 간의 연/월/일 차이를 Period 객체로 반환
        Period age = Period.between(birth, today);

        // 나이를 연도 단위로 추출해 출력
        // getYears(): Period 객체에서 연도 차이를 반환
        System.out.println("나이: " + age.getYears() + "세");
        // 예상 출력: 나이: 25세
        // (2000-05-12에서 2025-05-13까지 약 25년)
    }
}

 

시간 차이 계산

 

package time;

import java.time.Duration;
import java.time.LocalTime;

public class DurationExample {

    public static void main(String[] args) {
        // Duration 시간 차이를 계산할 때 사용
        LocalTime start = LocalTime.of(9, 0); // 오전 9시
        LocalTime end = LocalTime.of(11, 30);
        Duration duration = Duration.between(start, end);
        System.out.println("duration : " + duration);
        System.out.println("소요 시간 : " + duration.toMinutes() + "분");
        System.out.println("소요 시간 : " + duration.toSeconds() + "초");
    }
}

현재 시간 포맷

 

package time;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class KoreanDateTimeFormatting {

    public static void main(String[] args) {

        LocalDateTime now = LocalDateTime.now();
        System.out.println("현재 날짜와 시간 : " + now);

        // 한국식 포맷을 정의 (예: 2025년 05월 14일 12시 00분)
        // 패턴을 지정할 수 있다.
        // 패턴 설명 : yyyy(4자리년도) MM(2자리 월), dd(2자리 일), HH(24시간 ) mm(2자리 분)
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분");
        //now.format(formatter);
        // 우리 정의한 포맷 형태로 현재 시간을 출력해 준다.
        System.out.println("지금은1 : " + now.format(formatter));
        System.out.println("지금은2 : " + now);


    }

}