java 기초 공부 내용 정리(java.util 패키지- time)

홍준성·2022년 6월 3일
0

java 기초 공부

목록 보기
28/39

java.time 패키지

Java에서 날짜와 시간을 다루기 위한 패키지

java.time패키지의 하위 패키지

패키지설명
java.time날짜와 시간을 나타내는 LocalDate, LocalTime등을 포함한 패키지
java.time.format날짜와 시간을 파싱하고 포맷팅하는 API포함
java.time.chrono여러가지 달력 시스템을 사용할 수 있는 API 포함
java.time.temporal날짜와 시간을 연산하기 위한 API 포함
java.time.zone타임존을 지원하는 API포함

time 패키지의 시간과 날짜 클래스 종류

  • LocalDate 클래스
    날짜 정보를 저장
    1) 현재 날짜를 지정: now() 메서드
    2) 특정 날짜를 지정: of() 메서드

  • LocalTime 클래스
    시간정보를 저장하는 클래스
    1) 현재 시간 지정: now() 메서드
    2) 특정 시간 지정: of() 메서드

  • LocalDateTime 클래스
    날짜 정보와 시간 정보를 모두 저장
    1) 현재 날짜와 시간 지정: now() 메서드
    2) 특정 날짜와 시간 지정: of() 메서드

  • ZonedDateTime 클래스
    1) ISO-8601 달력 시스템에서 정의하는 Time Zone에 따라 날짜와 시간 저장
    2) 형식: 2016-01-08T12:56:09.017+09:00(Asia/Seoul)
    3) ZoneDateTime 클래스는 now() 메서드 뒤에 ZoneId를 매개값으로 넘겨야함

ZoneDateTime zdt = ZoneDateTime.now(ZoneId.of("UTC"));
  • Instant 클래스
    1970년 1월 1일부터 현재까지의 시간을 세는 객체

LocalDate/LocalTime 클래스

Calendar 클래스는 1월이 0으로 시작하나, LocalDate는 1월은 1로 시작함

클래스리턴타입메서드설명
LocalDateintgetYear()년도
LocalDateMonthgetMonth()Month의 열거값
LocalDateintgetMonthValue()
LocalDateintgetDayOfYear()1년의 몇 번째 일
LocalDateintgetDayOfMonth()월의 몇 번째 일
LocalDateDayOfWeekgetDayOfWeek()요일
LocalDatebooleanisLeapYear()윤년 여부
LocalTimeintgetHour()시간
LocalTimeintgetMinute()
LocalTimeintgetSecond()
LocalTimeintgetNano()나노초

클래스들의 정보 더하기/빼기

각 클래스는 필드의 값을 변경하기 위한 메서드가 존재한다.

클래스리턴타입
minusYears(long)년도 빼기
minusMonths(long)월 빼기
minusDays(long)일 빼기
minusWeeks(long)주 빼기
plusYears(long)년도 더하기
plusMonths(long)월 더하기
plusDays(long)일 더하기
plusWeeks(long)주 더하기
minusHours(long)시간 빼기
minusMinutes(long)분 빼기
minusSeconds(long)초 빼기
minusNanos(long)나노초 빼기
plusHours(long)시간 더하기
plusMinutes(long)분 더하기
		LocalDate ld=LocalDate.now();
		System.out.println(ld);
		
		LocalDate ld2=ld.minusYears(2).plusMonths(3).minusDays(4);
		System.out.println(ld2);

클래스들의 정보 값 변경하기

각 클래스는 필드의 값들을 특정 값으로 변경하기 위한 메서드가 존재

클래스리턴타입
withYear(int)년 변경
withMonth(int)월 변경
withDayOfMonth(int)월의 일 변경
withDayOfYear(int)년의 일 변경
withHour(int)시간 변경
withMinute(int)분 변경
withSecond(int)초 변경
withNano(int)나노초 변경
	public static void main(String[] args) {
		LocalDate ld = LocalDate.now();
		System.out.println(ld);
		
		LocalDate new_ld=ld.withYear(1999).withMonth(8).withDayOfYear(23);
		
		System.out.println(new_ld);
	}
}

Timer/TimerTask

개발자가 원하는 특정한 시간에 코드를 실행하거나 특정 시간 간격으로 반복되는 작업 처리

<사용방법>
1) TimerTask를 상속받는 새로운 클래스 선언

class Work1 extends TimerTask{...}

2) TimerTask 클래스의 run 추상 메서드에서 하고 싶은 작업 오버라이딩

public void run(){...}

3) Timer객체 생성 후 원하는 시간을 매개변수 값으로 전달

Timer t = new Timer(true) //프로그램 종료 시, 객체 자동 소멸하라는 것
TimerTask.w1 = new Work1();
t.schedule(w1, 5000); //1000 == 1초
	public static void main(String[] args) throws InterruptedException {
		
		Timer t = new Timer(true);
		TimerTask w1 = new Work1();
		TimerTask w2 = new Work2();
		
		t.schedule(w1, 3000);
		t.schedule(w2, 1000);
		Thread.sleep(4000);
		System.out.println("모든 작업 종료!");
	}
}

class Work1 extends TimerTask{

	@Override
	public void run() {
		System.out.println("work1 실행");
	}
}

class Work2 extends TimerTask{

	@Override
	public void run() {
		System.out.println("work2 실행");
	}
}
profile
준성이의 개발자 공부 velog

0개의 댓글