조회수 확인

자바 기본 API는 여러 절로 구성되어 있습니다.



Intro

Object Class

Objects Class

System Class

Class Class

String Class

StringTokenizer, StringBuffer, StringBuilder Class

Regular Expression & Pattern Class

Arrays Class

Wrapper Class

Math, Random Class

Date, Calendar Class

Format Class

java.time Package



java.time Package

 자바 8부터 날짜와 시간을 나타내는 여러 가지 API를 새롭게 추가하였습니다. 이 API는 java.util 패키지에 없고 별도의 java.time 패키지와 하위 패키지로 제공됩니다.










 날짜와 시간 객체 생성

  java.time 패키지에는 다음과 같이 날짜와 시간을 표현하는 5개의 클래스가 있습니다.




 

 * DateTimeCreateExam.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package api;
 
 
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
 
public class DateTimeCreateExam {
 
    public static void main(String[] args) throws InterruptedException {
        LocalDate currDate = LocalDate.now();
        System.out.println("현재 날짜: " + currDate);
        
        LocalDate targetDate = LocalDate.of(2030314);
        System.out.println("목표 날짜: " + targetDate);
        
        LocalTime currTime = LocalTime.now();
        System.out.println("현재 시간: " + currTime);
        
        LocalDateTime currTimeDate = LocalDateTime.now();
        System.out.println("현재 날짜와 시간: " + currTimeDate);
        
        ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC"));
        System.out.println("협정 세계 시간: " + utcDateTime);
        ZonedDateTime nyDateTime = ZonedDateTime.now(ZoneId.of("America/New_York"));
        System.out.println("뉴욕 시간: " + nyDateTime);
        
    }
 
}
 
 
 
cs





 날짜와 시간에 대한 정보 얻기

  LocalDate 와 LocalTime은 프로그램에서 날짜와 시간 정보를 이용할 수 있도록 여러 메서드를 제공합니다.


 * LocalDate : https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html

 * LocalTime: https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html



  LocalDateTime과 ZonedDateTime은 날짜와 시간 정보를 모두 갖고 있기 때문에 위 표에 나와 있는 대부분의 메서드를 가지고 있습니다. 단, isLeapYear()는 LocalDate에만 있기 때문에 toLocalDate() 메서드로 LocalDate 로 변환한 후에 사용할 수 있습니다. ZonedDateTime은 시간 존에 대한 정보를 제공하는 다음 메서드들을 추가적으로 제공하고 있습니다.






 * DateTimeInfoExam.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package api;
 
 
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
 
public class DateTimeInfoExam {
 
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);
        
        String strDateTime = now.getYear() + "년 ";
        strDateTime += now.getMonthValue() + "월 ";
        strDateTime += now.getDayOfMonth() + "일 ";
        strDateTime += now.getDayOfWeek() + " ";
        System.out.println(strDateTime);
        
        LocalDate nowDate= now.toLocalDate();
        if (nowDate.isLeapYear()) {
            System.out.println("올해는 윤년이 있네요");
        } else {
            System.out.println("올해는 윤년이 없네요");
        }
        
        ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC"));
        System.out.println("협정 세계시: " + utcDateTime);
        ZonedDateTime seoulDateTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
        System.out.println("협정 세계시: " + seoulDateTime);
        
        ZoneId zoneID = seoulDateTime.getZone();
        System.out.println("서울 존 아이디: " + zoneID);
        ZoneOffset zoneOffset = seoulDateTime.getOffset();
        System.out.println("서울 존 오프셋: " + zoneOffset);
        
    }
 
}
 
 
 
cs







 날짜와 시간 조작하기

  날짜와 시간 클래스들은 날짜와 시간을 조작하는 메서드와 상대 날짜를 리턴하는 메서드들을 가지고 있습니다.

  

  빼기와 더하기(minusXXX, plusXXX) 각 메서드들은 수정된 LocalDate, LocalTime, LocalDateTime, ZonedDateTime 을 리턴하기 때문에 . 연산자로 연결해서 순차적으로 호출할 수 있습니다.


  다음은 날짜와 시간을 변경하는 메서드들입니다.






 [출처: Java API Documents]


  with(TemporalAdjuster adjuster) 메서드를 제외한 나머지는 이름만으로 어떤 것을 수정하는 지 쉽사리 알 수 있습니다. with() 메서드는 현재 날짜를 기준으로 해의 첫 번째 일 또는 마지막 일, 달의 첫 번째 일 또는 마지막 일,등의 상대적인 날짜를 리턴합니다.


https://docs.oracle.com/javase/8/docs/api/java/time/temporal/TemporalAdjusters.html



 

 날짜와 시간 비교하기

  날짜와 시간 클래스들은 다음과 같이 비교하거나 차이를 구하는 메서드들이 있습니다.







  Period와 Duration 은 날짜와 시간의 양을 나타내는 클래스입니다. Period는 년, 달, 일의 양을 나타내는 클래스이고, Duration은 시, 분, 초, 나노초의 양을 나타내는 클래스입니다. 




 * DateTimeCompareExam.java


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package api;
 
 
import java.time.LocalDateTime;
import java.time.Period;
import java.time.temporal.ChronoUnit;
 
public class DateTimeCompareExam {
 
    public static void main(String[] args) {
        LocalDateTime startDateTime = LocalDateTime.of(202011900);
        System.out.println("시작일: " + startDateTime);
 
        LocalDateTime endDateTime = LocalDateTime.of(2021214900);
        System.out.println("종료일: " + endDateTime);
 
        System.out.println("[종료까지 남은 시간]");
        long remainYear = startDateTime.until(endDateTime, ChronoUnit.YEARS);
        long remainMonth = startDateTime.until(endDateTime, ChronoUnit.MONTHS);
        long remainDay = startDateTime.until(endDateTime, ChronoUnit.DAYS);
        long remainHour = startDateTime.until(endDateTime, ChronoUnit.HOURS);
        long remainMinute = startDateTime.until(endDateTime, ChronoUnit.MINUTES);
        long remainSecond = startDateTime.until(endDateTime, ChronoUnit.SECONDS);
        
        remainYear = ChronoUnit.YEARS.between(startDateTime, endDateTime);
        remainMonth = ChronoUnit.MONTHS.between(startDateTime, endDateTime);
        remainDay = ChronoUnit.DAYS.between(startDateTime, endDateTime);
        remainHour = ChronoUnit.HOURS.between(startDateTime, endDateTime);
        remainMinute = ChronoUnit.MINUTES.between(startDateTime, endDateTime);
        remainSecond = ChronoUnit.SECONDS.between(startDateTime, endDateTime);
        
        System.out.println("남은 해: " + remainYear);
        System.out.println("남은 달: " + remainMonth);
        System.out.println("남은 일: " + remainDay);
        System.out.println("남은 시간: " + remainHour);
        System.out.println("남은 분: " + remainMinute);
        System.out.println("남은 초: " + remainSecond);
        
        System.out.println("[종료까지 남은 기간]");
        Period period = Period.between(startDateTime.toLocalDate(), endDateTime.toLocalDate());
        System.out.print("남은 기간: " + period.getYears() + " 년 ");
        System.out.print(period.getMonths() + "월 ");
        System.out.println(period.getDays() + "일");
        
        
    }
 
}
 
 
 
cs








end

 


 * 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.


다른 카테고리의 글 목록

CSE/Java 카테고리의 포스트를 톺아봅니다