본문 바로가기

프로그램 이론/JAVA

[JAVA]날짜와 시간 & 형식화

1. 날짜와 시간 & 형식화

  1.1. Calendar와 Date

    - java.util.Date

     - 날짜와 시간을 다룰 목적으로 만들어진 클래스

     - Date의 메서드는 거의 deprecated되었지만 여전히 쓰이고 있다.

    - java.util.Calendar

     - Date클래스를 개선한 새로운 클래스

     - 여전히 단점이 존재

    - java.time패키지

     - Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공


   1.2. Calendar

     - java.util.Calendar

      - 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다.

    - Date와 Calendar간의 변환

 

 1.3. Calendar의 주요 메서드 - get()

   - get()으로 날짜와 시간 필드 가져오기 : int get(int filed)

   - Calendar에 정의된 필드


 1.4. Calendar의 주요 메서드 - set()

   - set()으로 날짜와 시간지정하기

  - 날짜 지정하는 방법. 월이 0부터 시작한다는 점에 주의

   - 시간을 지정하는 방법


 1.5. Calendar의 주요 메서드 - clear()

   - clear()와 clear(int field)로 Calendar객체 초기화 하기

    - clear()는 Calendar객체의 모든 필드를 초기화

   - clear(int field)는 Calendar객체의 특정 필드를 초기화


 2.1. DecimalFormat - 숫자의 형식화

   - 숫자를 다양한 형식으로 출력할 수 있게 해준다.


    - 특정 형식으로 되어 있는 문자열에서 숫자를 뽑아낼 수 도 있다.


 2.2. SimpleDateFormat - 날짜의 형식화

   - 날짜와 시간을 다양한 형식으로 출력할 수 있게 해준다.


  - 특정 형식으로 되어 있는 문자열에서 날짜와 시간을 뽑아낼 수도 있다.


 2.3. ChoiceFormat - 범위의 형식화

   - ChoiceFormat은 특정 범위에 속하는 값을 문자열로 반환해준다.

   - if문이나 switch문으로 처리하기 복잡한 경우에 유용하다.

   - 패턴 구분자 '#'는 경계값을 포함하고 '<'는 포함하지 않는다.

 2.4. MessageFormat - 텍스트의 형식화

   - 데이터를 정해진 양식에 맞춰 출력할 수 있도록 도와준다.

   - 특정 형식을 가진 문자열에서 데이터를 뽑아낼 때 유용하다.


 3.1. java.time패키지

   - Date, Calendar의 단점을 보완하기 위해 추가된 패키지

   - 이 패키지에 속한 클래스들은 모두 불변이다.


 3.2. java.time 패키지의 핵심 클래스

   - 날짜를 표현할 때는 LocalDatem 시간을 표현할 때는 LocalTime을 사용

   - 날짜와 시간을 같이 표현할 때는 LocalDateTime을 사용

  - 시간대까지 다뤄야 할 때는 ZonedDateTime을 사용

  - Period는 날짜간의 차이를 Duration은 시간의 차이를 표현할 때 사용


 3.2. java.time 패키지의 핵심 클래스

   - Temporal : 날짜와 시간을 표현하는 클래스들이 구현

   - TemporalAmount : 날짜와 시간의 차이를 표현하는 클래스가 구현

  - Temporal로 시작하는 인터페이스들은 매개변수 타입으로 많이 사용되며, TermporalAmount인지 아닌지만

    구별하면 된다.

 

 3.2. java.time패키지의 핵심 클래스

   - TemporalInit : 날짜와 시간의 단위를 정의해 놓은 인터페이스

   - TemporalField : 년,월,일 등 날짜와 시간의 필드를 정의해 놓음


 3.3. LocalDate와 LocalTime

   - java.time패키지의 핵샘. 이 두 클래스를 잘 이해하면 나머지는 쉬움

   - now()는 현재 날짜 시간을 of()는 특정 날짜 시간을 지정할 때 사용

  - 일 단위나 초 단위로도 지정가능(1일은 24*60*60=86400초)

  - parse()로 문자열을 LocalDate나 LocalTime으로 변환할 수 있다.


 3.3. LocalDate와 LocalTime - 필드값 가져오기

   - LocalDate와 LocalTime에서 특정 필드의 값 가져오는 메서드


 3.3. LocalDate와 LocalTime - 필드값 가져오기

   - LocalDate와 LocalTime에서 특정 필드 값 가져오기 : get(), getLong()


   - get(), getLong()에 사용할 수 있는 필드의 목록(*는 getLong()사용)


3.3. LocalDate와 LocalTime - 필드값 변경하기

  - with(), plus(), minus()로 특정 필드의 값을 변경(새로운 객체가 반환됨)


 3.3. LocalDate와 LocalTime - 날짜와 시간의 비교


 3.4. Instant - java.util.Date를 대체


 3.5. LocalDateTime과 ZonedDateTime


 3.5. LocalDateTime과 ZonedDateTime

 

 3.6. ZonedDateTime의 변환

 

 3.7. ZoneOffset과 OffsetDateTime


 3.8. TemporalAdiusters

 

 3.9. Period와 Duration


 


  3.10. 날짜와 시산의 형식화(formatting)

    - java.time.format패키지 : 형식화와 관련된 클래스를 제공

    - DateTimeFormatter의 format()를 사용해서 날짜와 시간을 형식화


 3.11. 로케일에 종속된 형식화


 3.12. 출력형식 직접 정의하기


 3.13. 문자열을 날짜와 시간으로 파싱하기