Calendar, Date 클래스의 문제점
1. 불변 객체가 아니다.
-> 즉 set으로 변경이 가능하다는 점은 누군가 악의적으로 변경할 수 있기 때문에 get/set 메서드에서 직접 Date클래스를 사용하는 것이 위험하다.
2. 상수 필드 남용
-> calendar.add(Calendar.SECOND, 2);
3. 헷갈리는 월 지정
-> 1월을 0으로 표현하는 문제 + Calendar.OCTOBER로 월을 지정하지만 실질적인 값은 9(!=10)인 문제
4. 일관성 없는 요일 상수
-> 어디서는 일요일이 0, 어디서는 일요일이 1
5. Date와 Calendar 객체의 역할 분담
-> 다소 치명적인데 년/월/일 계산은 Date 클래스만으로는 부족해서 왔다갔다 하는 문제가 있다. 또한 Calendar객체를 생성하고 Date 객체를 생성하는 프로세스를 거치기 때문에 번거롭고 생성비용이 비싸다.
6. 기타 java.util.Date 하위 클래스의 문제
이 문제 해결을 위해 java 8부터는 LocalDate, LocalTime, LocalDateTime 클래스가 생성
-----------------사용법-----------------
LocalDate currentDate = LocalDate.now(); // 컴퓨터의 현재 날짜 정보 2018-07-26
LocalDate myDate = LocalDate.of(int year, int month, int datOfMonth); //년,월,일
getYear();
getMonth(); (Month 열거값나옴 JANUARY, FEBRUARY)
getMonthValue(); 월(1,2,3,...)
getDayOfYear(); 년의 몇 번째 일
getDayOfMonth(); 월의 몇번째 일
getDateOfWeek();요일(MONDAY, TUESDAY,...)
isLeapYear(); 윤년여부
LocalTime currentTime = LocalTime.now(); // 컴퓨터의 현재 시간 정보. 결과 : 16:24:02.408
LocalTime targetTime = LocalTime.of(int hour, int minute, int second, int nanoOfSecond);
int getHour() 시간
int getMinute() 분
int getSecond() 초
int getNano() 나노초
LocalDateTime 시간,날짜 동시에 필요할 때 사용.
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);
ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC"));
ZonedDateTime seoulDateTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));
감사합니다.
출처: https://jeong-pro.tistory.com/163
'Tip' 카테고리의 다른 글
[spring] file upload size 설정 (0) | 2020.04.02 |
---|---|
[mybatis] if 비교 (0) | 2020.04.02 |
[mybatis] select 결과를 hashMap 에 저장 (0) | 2020.04.02 |
[javascript] decodeURI (0) | 2020.04.02 |
[JSTL] c:out 쓰는 이유 (0) | 2020.04.02 |