JAVA chapter11. 기본 API 클래스. 11.16 java.time 패키지
JAVA/CONCEPT 2017. 11. 28. 21:21 |11.16 java.time 패키지
- 자바8부터 추가된 패키지
- 날짜와 시간을 나타내는 여러가지 API가 새롭게 추가됨
- 날짜와 시간을 조작하거나 비교하는 기능이 추가됨
// Date와 Calendar는 날짜와 시간을 조작하거나 비교하는 기능이 불충분
11.16.1 날짜와 시간 객체 생성
* LocalDate
* LocalTime
* LocalDateTime
* ZonedDateTime
- 저장 형태 : 2014-04-21 T07:50:24.017 +09:00(존오프셋) [Asia/Seoul](존아이디)
- 존오프셋(ZoneOffset)
// 협정세계시(UTC : Universal Time Coordinated)와 차이나는 시간(시차)를 말한다
- 존아이디(ZoneId)
// java.util.TimeZone의 getAvailbleDs() 메소드가 리턴하는 유효한 값 중 하나
존아이디
1 2 3 4 5 | String[] availableIDs = TimeZone.getAvailableIDs() for(String zoneId : availableIDs) { System.out.println(zoneId); } | cs |
* Instant
- 날짜와 시간의 정보를 얻거나, 조작하는데 사용되지 않고
- 특정 시점의 타임스탬프(Time-Stamp)로 사용
- 주로 특정 두 시점간의 시간적 우선 순위를 따질 때 주로 사용
- java.util.Date와 가장 유사한 클래스
// Date : 로컬 컴퓨터의 현재 날짜와 시간 정보를 기준
// Instant : 협정 세계시(UTC)를 기준
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 52 53 54 | package sec16.exam01_java_time; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; public class DateTimeCreateExample { public static void main(String[] args) throws InterruptedException { // 43라인의 예외처리 //날짜 얻기 LocalDate currDate = LocalDate.now(); // 2017-11-28 System.out.println("현재 날짜: " + currDate); LocalDate targetDate = LocalDate.of(2024, 5, 10); // 2024-05-10 System.out.println("목표 날짜: " + targetDate + "\n"); //시간 얻기 LocalTime currTime = LocalTime.now(); // 19:59:16.020 System.out.println("현재 시간: " + currTime); LocalTime targetTime = LocalTime.of(6, 30, 0, 0); // 06:30 System.out.println("목표 시간: " + targetTime + "\n"); //날짜와 시간 얻기 LocalDateTime currDateTime = LocalDateTime.now(); // 2017-11-28T19:59:16.020 System.out.println("현재 날짜와 시간: " + currDateTime); LocalDateTime targetDateTime = LocalDateTime.of(2024, 5, 10, 6, 30, 0, 0); // 2024-05-10T06:30 System.out.println("목표 날짜와 시간: " + targetDateTime + "\n"); //협정 세계시와 시간존(TimeZone) ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC")); // 2017-11-28T10:59:16.021Z[UTC] System.out.println("협정 세계시: " + utcDateTime); ZonedDateTime newyorkDateTime = ZonedDateTime.now(ZoneId.of("America/New_York")); // 2017-11-28T05:59:16.023-05:00[America/New_York] System.out.println("뉴욕 시간존: " + newyorkDateTime + "\n"); //특정 시점의 타임스탬프 얻기 Instant instant1 = Instant.now(); Thread.sleep(10); Instant instant2 = Instant.now(); if(instant1.isBefore(instant2)) { System.out.println("instant1이 빠릅니다."); } else if(instant1.isAfter(instant2)) { System.out.println("instant1이 늦습니다."); } else { System.out.println("동일한 시간입니다."); } System.out.println("차이(nanos): " + instant1.until(instant2, ChronoUnit.NANOS)); } } | cs |
11.16.2 날짜와 시간에 대한 정보 얻기
- LocalDateTime/ZonedDateTime에는 위 표에 나와있는 대부분의 메소드를 가진다
// 단 isLeapYear()는 LocalDate에만 있기때문에 toLocalDate() 메소드로 LocalDate로 변환 후에 사용할 수 있다
// ZonedDateTime에서 제공하는 추가적인 메소드
|
|
11.16.3 날짜와 시간을 조작하기
* 빼기와 더하기
*변경하기
11.16.4 날짜와 시간을 비교하기
'JAVA > CONCEPT' 카테고리의 다른 글
JAVA chapter12. 멀티 스레드. 12.3 스레드 우선순위 (0) | 2017.11.29 |
---|---|
JAVA chapter12. 멀티스레드 12.1 멀티 스레드 개념. 12.2 작업 스레드 생성과 실행 (0) | 2017.11.28 |
JAVA chapter11. 기본 API 클래스. 11.15 Format 클래스 (0) | 2017.11.27 |
JAVA chapter11. 기본 API 클래스. 11.14 Date, Calendat 클래스 (0) | 2017.11.27 |
JAVA chapter 06. 클래스. 6.9 인스턴스 멤버와 this. 6.10 정적 멤버와 static (0) | 2017.11.18 |