본문 바로가기
IT 개발/JAVA

Date 관련 클래스

by Love of fate 2019. 8. 13.
728x90
반응형

* Date 관련 클래스

1) Calender  

2) Date

3) LocalDate, LocalTime, LocalDateTime

* Calender, Date 클래스는 혼자서 공부하거나 학원에서 사용할때에는 많이 사용하나, 회사에서 쓰기에는 

  부적합한 클래스.

* 아래의 문제를 해결하기 위해서 java8부터는 LocalDate, LocalTime, LocalDateTime 이라는 클래스가 생김.


* Calender, Date의 단점

  1. 불변 객체가 아니다.

     - set, get을 통해 값이 유동적으로 변한다.

     - set으로 변경이 가능하다는 점은 누군가 악의적으로 변경할 수 있기 때문에 get/set 메서드에서 직접 Date클래스를

      사용하는 것이 위험하다.

 

  2. 상수 필드 남용

     * 정적변수(필드)

        - 클래스 내에 선언된 정적 변수는 어느 객체에도 포함되지 않으며 항상 값이 유지되도록 하는 변수

        - 해당 클래스로부터 생성된 모든 객체가 공동으로 사용할 수 있는 변수.

        - static int carCount = 1;

     * 상수필드 (=상수변수) : 값을 변경할 수 없는 변수, 선언과 함께 초기화를 해야한다. 

        - final static int MAXSPEED = 200;

     * calendar.add(Calendar.SECOND, 2);

 

  3. 헷갈리는 월 지정

     - 1월을 0으로 표현하는 문제 + Calendar.OCTOBER로 월을 지정하지만 실질적인 값은 9(!=10)인 문제

 

  4. 일관성 없는 요일 상수

     - 사용하는 곳에 따라 일요일의 index가 0일 수도, 1일 수도 있다.

 

  5. Date와 Calendar 객체의 역할 분담

     - 다소 치명적인데 년/월/일 계산은 Date 클래스만으로는 부족해서 왔다갔다 하는 문제가 있다.

       또한 Calendar객체를 생성하고 Date 객체를 생성하는 프로세스를 거치기 때문에 번거롭고 생성비용이 비싸다.

 

  6. 기타 java.util.Date 하위 클래스의 문제


* LocalDate / LocalTime / LocalDateTime

  - LocalDate : [년-월-일] 데이터를 가지고 오는 클래스

     - String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));

  - LocalTime : [시-분-초] 데이터를 가져오는 클래스 

     - String time =  LocalTime.now().format(DateTimeFormatter.ofPattern("hhmmss"));

  - LocalDateTime : [년-월-일-시-분-초] 데이터를 가져오는 클래스 

     - String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddhhmmss"));

728x90
반응형

'IT 개발 > JAVA' 카테고리의 다른 글

JDBC : HDF 파일 Insert  (0) 2020.03.23
poi 라이브러리 / Excel DB 적재  (0) 2020.01.14
JAVA (3일차) - 반복분  (0) 2019.06.15
JAVA (2일차) - 기초 다지기  (0) 2019.06.13
JAVA (1일차) - 기초 다지기  (0) 2019.06.13