본문 바로가기
국비 교육/백엔드(Java, Spring)

[자바] LocalDate, Calendar, Anonymous

by 육츠 2024. 1. 30.
Contents 접기

LocalDate, Calendar : 날짜와 시간

Python :: LocalDate(SE8)

 

Uses of Class java.time.LocalDate (Java Platform SE 8 )

LocalDate IsoChronology.date(Era era, int yearOfEra, int month, int dayOfMonth) Obtains an ISO local date from the era, year-of-era, month-of-year and day-of-month fields.

docs.oracle.com

python :: Calendar(SE8)

 

Uses of Class java.time.LocalDate (Java Platform SE 8 )

LocalDate IsoChronology.date(Era era, int yearOfEra, int month, int dayOfMonth) Obtains an ISO local date from the era, year-of-era, month-of-year and day-of-month fields.

docs.oracle.com

 

LocalDate 사용

package timeset;

import java.time.Clock;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Year;
import java.time.ZoneId;

public class LocalDateTest01 {

	public static void main(String[] args) {
		LocalDate d1 = LocalDate.now();
		LocalDate d2 = LocalDate.of(2024,1,1);
		
		LocalTime t1 = LocalTime.now();
		LocalTime t2 = LocalTime.of(14,26,10);
		
		
		System.out.printf("LocalDate now() : %s%n", d1);
		System.out.printf("LocalDate of() : %s%n", d2);
		System.out.printf("LocalTime now() : %s%n", t1);
		System.out.printf("LocalTime of() : %s%n", t2);
		
		LocalDateTime ld1 = LocalDateTime.now();
		System.out.printf("LocalDateTime now() : %s%n", ld1);
		
		LocalDateTime ld2 = LocalDate.now().atTime(LocalTime.MIDNIGHT);
		System.out.printf("LocalDateTime MIDNIGHT() : %s%n", ld2);
		
		LocalDateTime ld3 = LocalDate.now().atTime(LocalTime.MAX);
		System.out.printf("LocalDateTime max() : %s%n", ld3);
		
		//now
		LocalDateTime time1 = LocalDateTime.now();
		LocalDateTime time2 = LocalDateTime.now(Clock.systemDefaultZone());
		LocalDateTime time3 = LocalDateTime.now(ZoneId.of("Asia/Seoul"));
		
		//of
		LocalDateTime time4 = LocalDateTime.of(2024,1,15,0,0,0);
		LocalDateTime time5 = LocalDateTime.of(LocalDate.now(), LocalTime.now());
		
		LocalDateTime independent = LocalDateTime.parse("1945-08-15T15:36:00.000");
		System.out.println("광복절 일왕 방송" + independent);
		
		LocalDateTime xmas = LocalDateTime.of(2024, 12,25,0,0,0);
		System.out.println("2024년 크리스마스" + xmas);
		
		LocalDateTime vote = Year.of(2024).atMonth(4).atDay(10).atTime(10,00);
		System.out.println("22대 국회의원선거일" + vote);
		
		LocalDateTime time7 = LocalDate.now().atTime(10,30);		
		LocalDateTime time6 = Year.of(2024).atMonth(1).atDay(15).atTime(10,30);
	}

}

 

출력 형식

package timeset;

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

public class LocalDateTest02 {

	public static void main(String[] args) {
		
		LocalDateTime now = LocalDateTime.of(2024,1,30,15,13,00);
		System.out.println("그냥 출력: " + now);
		String format1 = now.format(
				DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
		System.out.println("포맷1: " + format1);
		
		String format2 = now.format(
				DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 ss.SSS초"));
		System.out.println("포맷2: " + format2);
		
		String format3 = now.format(DateTimeFormatter.ISO_LOCAL_DATE);
		System.out.println("포맷3: " + format3);
		
		
		
	}

}

 

날짜만 (날짜 세기)

package timeset;

import java.time.LocalDateTime;

public class LocalDateTest03 {

	public static void main(String[] args) {
		LocalDateTime now = LocalDateTime.now();
		
		now = LocalDateTime.of(2023,12,25,12,30);
		
		System.out.println("현재: " + now);
		
		System.out.println("Year ====> " + now.getYear());
		System.out.println("Month ====> " + now.getMonth());
		System.out.println("Day of Month ====> " + now.getDayOfMonth());
		// 그 달에 몇 번째 날짜인가
		
		System.out.println("Day of Week ====>" + now.getDayOfWeek());
		System.out.println("Day of Year ====>" + now.getDayOfYear());
		// 그 해에 몇 번째 날짜인가
		
		System.out.println("Hour ====> " + now.getHour());
		System.out.println("Minute ====> " + now.getMinute());
		System.out.println("Second ====> " + now.getSecond());
		System.out.println("Nano Second ====> " + now.getNano());
		
	}

}

 

후 / 전

package timeset;

import java.time.LocalDateTime;

public class LocalDateTest04 {

	public static void main(String[] args) {
		LocalDateTime now = LocalDateTime.now();
		System.out.println("현재 시간은 : " + now);
		System.out.println();
		
		System.out.println("10년 후: " + now.plusYears(10));
		System.out.println("10년 전: " + now.minusYears(10));
		System.out.println();
		
		System.out.println("10개월 후: " + now.plusMonths(10));
		System.out.println("10개월 전: " + now.minusMonths(10));
		System.out.println();
		
		System.out.println("10일 후: " + now.plusDays(10));
		System.out.println("10일 전: " + now.minusDays(10));
		System.out.println();
		
		System.out.println("10분 후: " + now.plusMinutes(10));
		System.out.println("10분 전: " + now.minusMinutes(10));
		System.out.println();
		
		System.out.println("10초 후: " + now.plusSeconds(10));
		System.out.println("10초 전: " + now.minusSeconds(10));
		System.out.println();
		
		
	}

}

 

이전 / 이후 / 동일

package timeset;

import java.time.LocalDate;

public class LocalDateTest05 {

	public static void main(String[] args) {
		
		LocalDate koreanWar = LocalDate.of(1950, 6, 25);
		LocalDate independence = LocalDate.of(1945, 8, 15);
		LocalDate surrender = LocalDate.of(1945, 8, 15);
		
		if(independence.isBefore(koreanWar))
				System.out.println("광복 이후에 전쟁이 발발 하였다.");
		
		if(koreanWar.isAfter(independence))
			System.out.println("한국 전쟁은 광복 이후에 발발 하였다.");
		
		if(independence.isEqual(surrender))
			System.out.println("일왕의 항복 선언은 대한독립과 같은 날 일어났다.");
		
		if(independence.compareTo(surrender) == 0 )
			System.out.println("일왕의 항복 선언은 대한독립과 같은 날 일어났다.");
		
		
	}

}

 

Calendar 사용

package timeset;

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

public class CalenderTest01 {

	public static void main(String[] args) {
		// Calendar c =  new Calendar();
		// abstract 클래스 이기 때문에 객체 생성 불가
		
		Calendar c = Calendar.getInstance();
		// System.out.println(c.get(Calendar.DAY_OF_YEAR));
		// 상수로 구성되어 있다.
		
		Date d = new Date();
		System.out.println(d);

		GregorianCalendar g = new GregorianCalendar();
		// Calendar g = new GregorianCalendar();  :: 업캐스팅
		int year = g.get(Calendar.YEAR);
		int month = g.get(Calendar.MONTH);
		int date = g.get(Calendar.DATE);
		int hour = g.get(Calendar.HOUR);
		int minute = g.get(Calendar.MINUTE);
		int second = g.get(Calendar.SECOND);
		int yoil = g.get(Calendar.DAY_OF_WEEK);
		// 화요일 이라고 쓰고 싶으면 switch 문
		// 일요일 부터 시작
		
		System.out.printf("%d년 %d월 %d일, %d요일 %d:%d:%d%n", 
				year, month+1 , date, yoil, hour, minute, second);
		
		
		
		
	}

}
코드 의미
Calendar c = Calendar.getInstance(); 추상 클래스이기 때문에 객체를 생성할 수 없다.
getInstance() 로 읽어 온다.
GregorianCalendar g = new GregorianCalendar();
// Calendar g = new GregorianCalendar(); 
 업캐스팅도 가능하다.

 

익명클래스 Anonymous

- 클래스의 선언과 객체 생성을 동시에 하기 때문에 단 한번만 사용 될 수 있으며 오직 하나의 객체를 생성하는 일회용 클래스이다.
- 이름이 없기 때문에 생성자도 가질 수 없다.

package timeset;

interface Sample{
	public int add(int x, int y);
}

public class AnonymousClassTest {

	public static void main(String[] args) {
		// implements 를 안쓰고 사용할 수 있는
		Sample s = new Sample() {
			
			@Override
			public int add(int x, int y) {
				return x+y;
			}
		};
		
		System.out.println(s.add(10,20));
		
	}

}
코드 의미
Sample s = new Sample() {

    @Override
    public int add(int x, int y) {
        return x+y;
      }
};
implements 를 안쓰고 사용할 수 있다.

강제 Override

'국비 교육 > 백엔드(Java, Spring)' 카테고리의 다른 글

[자바] ENUM  (0) 2024.02.13
[자바] 입출력 I/O 와 Stream  (0) 2024.01.30
[자바] 예외 Exception  (0) 2024.01.30
[자바] String 예제 - 주민번호 검증 프로그램  (0) 2024.01.29