안녕하세요
오늘은 Calender나 Date를 대신 LocalDateTime, LocalTime, LocalDate를 사용해서 날짜나 시간 데이터를 관리하는 방법에 대해서 공부해보겠습니다.
먼저 Java 8 부터 java.time api가 출시 됐기 때문에,
LocalDateTime, LocalTime, LocalDate 이 클래스는 Java version 8 이상만 사용할 수 있습니다.
1. 날짜/시간 객체 생성
LocalTime
시간 정보만 필요할 때 사용합니다.
now()를 사용하면 기기의 현재시간 정보를 저장한 객체를 리턴합니다.
of()를 사용하면, 파라미터에 원하는 시간 정보를 지정하여 객체를 만들 수 있습니다.
이때 nanoOfSecond는 생략할 수 있습니다.(생략시 0으로 지정됨)
LocalTime currentTime = LocalTime.now(); // 컴퓨터의 현재 시간 정보. 예) 16:24:02.408
LocalTime targetTime = LocalTime.of(int hour, int minute, int second, int nanoOfSecond);
// 숫자로 시간 데이터 설정
LocalDate
날짜 정보만 필요할 때 사용합니다.
now()를 사용하면 기기의 현재날짜 정보를 저장한 객체를 리턴합니다.
of()를 사용하면, 파라미터에 원하는 날짜 정보를 지정하여 객체를 만들 수 있습니다.
LocalDate currentDate = LocalDate.now(); // 컴퓨터의 현재 날짜 정보 예) 2018-07-26
LocalDate myDate = LocalDate.of(int year, int month, int datOfMonth);
//년,월,일 숫자(int)로 입력해서 생성
LocalDateTime
날짜와 시간정보 모두 필요할 때 사용합니다.
now()를 사용하면 기기의 현재 날짜+시간 정보를 저장한 객체를 리턴합니다.
of()를 사용하면, 파라미터에 원하는 날짜+시간 정보를 지정하여 객체를 만들 수 있습니다.
이때, second, nanoOfSecond는 생략할 수 있습니다. (생략시 0으로 지정됨)
LocalDateTime currentDateTime = LocalDateTime.now(); // 컴퓨터의 현재 날짜와 시간 정보. 결과 : 2018-07-26T16:34:24.757
LocalDateTime targetDateTime = LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond);
2. 날짜/시간 값 가져오기
LocalTime 값 가져오기
int getHour(); //시간
int getMinute(); //분
int getSecond(); //초
int getNano(); //나노초
LocalDate 값 가져오기
int getYear(); // 연도
Strung getMonth(); //(Month 열거값나옴 JANUARY, FEBRUARY)
int getMonthValue(); // 월(1,2,3,...)
int getDayOfYear(); //년의 몇 번째 일
int getDayOfMonth(); //월의 몇번째 일
String getDateOfWeek();//요일(MONDAY, TUESDAY,...)
bloon isLeapYear(); //윤년여부
LocalDateTime 값 가져오기
위의 두 메서드 모두 사용 가능합니다.
3. 날짜/시간 더하기 빼기
더하기 메서드
plusYears(int i) // 객체의 year값이 i 값 만큼 추가로 증가한다.
plusMonths(int i) // 객체의 Month값이 i 값 만큼 추가로 증가한다.
plusDays(int i) // 객체의 day값이 i 값 만큼 추가로 증가한다.
plusHours(int i) // 객체의 hour 값이 i 값 만큼 추가로 증가한다.
plusMinutes(int i) // 객체의 minute값이 i 값 만큼 추가로 증가한다.
plusSeconds(int i) // 객체의 second값이 i 값 만큼 추가로 증가한다.
plusNanos(int i) // 객체의 NanoOfSeconds값이 i 값 만큼 추가로 증가한다.
빼기 메서드
minusYears(int i) // 객체의 year값이 i 값 만큼 감소한다.
minusMonths(int i) // 객체의 Month값이 i 값 만큼 감소한다.
minusDays(int i) // 객체의 day값이 i 값 만큼 감소한다.
minusHours(int i) // 객체의 hour 값이 i 값 만큼 감소한다.
minusMinutes(int i) // 객체의 minute값이 i 값 만큼 감소한다.
minusSeconds(int i) // 객체의 second값이 i 값 만큼 감소한다.
minusNanos(int i) // 객체의 NanoOfSeconds값이 i 값 만큼 감소한다.
이런식으로 더하기 빼기를 하면 변경된 값을 가진 객체가 반환됩니다. LocalDateTime 객체는 위의 메서드를 모두 사용가능하고 LocalDate 객체는 날짜 변경 메서드만, LocalTime 객체는 시간 변경 메서드만 사용할 수 있습니다.
예제 코드
https://stickode.com/detail.html?no=1834
다음시간에는 LocalDateTime, LocalTime, LocalDate를 사용해서 비교를 하는 방법에 대해 포스팅 하겠습니다.
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] MVC 패턴 익혀보기. (3) | 2021.10.01 |
---|---|
[JAVA][Android] 현재 시간, 날짜, 밀리초 등등 가져오기 (0) | 2021.09.28 |
[JAVA][Android] Spinner 예제 (0) | 2021.09.24 |
[JAVA][Android] Rxjava와 butterknife를 써서 구구단 앱 만들기 (0) | 2021.09.23 |
[JAVA][Android] 수업 종료 날짜 계산하기 (주 단위) (0) | 2021.09.22 |