- 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
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);
}
}