본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

이론

자바의 정석 Chapter10: 날짜와 시간 & 형식화 date, time and formating

Date, Calendar와 GregorianCalendar

Date가 나오고 보완하기 위해 Calendar 클래스가 등장했다.

GregorianCalendar는 Calendar를 상속받아 구현한 전세계 공통 그레고리력에 맞게 구현한것.

https://standout.tistory.com/1224

 

Calendar와 Date, 이를 이용한 날짜/ 일수 출력하기

오래전부터 제공되던 Date클래스를 보완하기 위해 Calendar 클래스가 등장. Calendar와 GregorianCalendar GregorianCalendar는 Calendar를 상속받아 구현한 전세계 공통 그레고리력에 맞게 구현한것. // Calendar를

standout.tistory.com

 

 

형식화클래스

형식화클래스는 원하는 값을 형식에 맞게 출력하기 위한 클래스이다.

숫자형식을 위한 DecimalFormat, 날짜와시간을 위한 SimpleDateFormat, 숫자범위에따른 텍스트를 위한(A,B,C등급..) ChoiceFormat, 메시지를 형식화하고 국제화하기 위한 MessageFormat이 있다.

https://standout.tistory.com/1225

 

DecimalFormat, 숫자데이터를 다양한 형식으로 표현하다

우선 예시코드로 우선 이해해보자. 패턴 아래의 코드를 보면 1234567.89란 숫자를 #,##0.00형식으로 바꾸기로 지정하고 출력했다. import java.text.DecimalFormat; public class DecimalFormatExample { public static void mai

standout.tistory.com

https://standout.tistory.com/1226

 

SimpleDateFormat, Date와 Calendar보다 쉽게 날짜 형식 지정하기

SimpleDateFormat Date와 Calendar만으로 날짜 데이터를 출력하는 것은 불편하다. SimpleDateFormat를 이용시 여러 문제들이 간단히 해결된다. 편의상 전체를 통합한 예시를 첨부했으나 사용시에는 선택적으

standout.tistory.com

https://standout.tistory.com/1227

 

ChoiceFormat, limits와 grades를 설정해 등급추출하기

ChoiceFormat 특정범위에 속하는 값을 문자열로 변환할 수 있다. import java.text.ChoiceFormat; public class GradeExample { public static void main(String[] args) { // 등급 범위와 해당하는 문자열을 정의합니다. double[] lim

standout.tistory.com

https://standout.tistory.com/1228

 

MessageFormat, 문자열을 정의하고 {0} index에 채워넣다

MessageFormat 정해진 양식에 맞게 데이터를 출력할 수 있도록 도와준다. 양식을 미리 작성하고 다수의 데이터를 같은 양식으로 출력할때 사용하면 좋다. import java.text.MessageFormat; public class MessageForma

standout.tistory.com

 

 

 

기존 Date와 Calendar가 가진 단점을 해소하기 위한 java.time패키지가 있다.

주요한 클래스와 인터페이스는 아래와 같으며, 이러한 클래스를 통해 다양한 시나리오에서의 날짜와 시간을 효율적으로 다룰 수 있다. java 8 이상에서 권장되고 코드의 가독성과 유지보수성을 높일 수 있다.

LocalDate: 날짜 정보를 저장하는 클래스로, 연, 월, 일을 표현할 수 있습니다.
LocalTime: 시간 정보를 저장하는 클래스로, 시, 분, 초, 나노초를 표현할 수 있습니다.
LocalDateTime: 날짜와 시간 정보를 모두 포함하는 클래스로, LocalDate와 LocalTime을 합친 형태입니다.
ZonedDateTime: 특정 시간대까지 고려한 날짜와 시간 정보를 저장하는 클래스입니다.
Instant: 에포크 시간(epoch time)을 나타내는 클래스로, 특정 지점에서의 경과 시간을 나타냅니다.
Duration: 두 시간 간의 차이를 나타내는 클래스로, 시간 간격을 나타냅니다.
Period: 두 날짜 간의 차이를 나타내는 클래스로, 날짜 간격을 나타냅니다.
Temporal, TemporalAccessor, TemporalAdjuster: 날짜와 시간 클래스들이 구현하는 인터페이스로, 시간을 조작하고 쿼리하는 메커니즘을 제공합니다.
TemporalAmount: 일정한 기간이나 간격을 나타내는 인터페이스로, Duration과 Period가 구현합니다.
DateTimeFormatter: 날짜와 시간을 원하는 형식으로 변환하는 데 사용되는 클래스입니다.

https://standout.tistory.com/1245

 

java.time패키지: 객체생성 now() of() parse()와 인터페이스, 간격을 나타내는 Period Duration

java.time Date와 Calendar가 가지고 있던 단점을 해소하기 위해 java.time패키지가 추가됨. https://standout.tistory.com/1224 Calendar와 Date, 이를 이용한 날짜/ 일수 출력하기 오래전부터 제공되던 Date클래스를 보

standout.tistory.com

 

 

 

java.time패키지의 LocalDate와 LocalTtime은 가장 기본으로 

get() getLong()특정필드값 가져오기, with() plus() minus() 변경하기, truncatedTo() 0으로 만들기, isAfter() isBefore() isEqual() 비교하기등을 지원한다.

https://standout.tistory.com/1248

 

LocalDate와 LocalTime: get() getLong()특정필드값 가져오기, with() plus() minus() 변경하기, truncatedTo() 0으로

LocalDate와 LocalTime은 java.time 패키지의 가장 기본이 된다. 나머지 클래스들은 이들의 확장. https://standout.tistory.com/1245 java.time패키지: 객체생성 now() of() parse()와 인터페이스, 간격을 나타내는 Period Du

standout.tistory.com

 

 

TemporalAdjusters

plus(), minus()와 같은 메서드로 날짜 와 시간을 계산할 수 있으나 지난주 토요일의 날짜, 이번달의 3번째 금요일의 날짜 등을 계산하기엔 어렵다.

자주쓰일만한 날짜 계산을 대신 해주는 메서드를 정의해놓은 것이 TemporalAdjusters클래스.

https://standout.tistory.com/1362

 

TemporalAdjusters, 자주쓰일만한 날짜 계산을 대신 해주다.

TemporalAdjusters plus(), minus()와 같은 메서드로 날짜 와 시간을 계산할 수 있으나 지난주 토요일의 날짜, 이번달의 3번째 금요일의 날짜 등을 계산하기엔 어렵다. 자주쓰일만한 날짜 계산을 대신 해

standout.tistory.com

 

 

에포크타임의 표현

사람에게는 불편하지만 단일 진법으로만 다뤄 계산하기 쉬운 Instant형을 생성할 수 있다.

https://standout.tistory.com/1249

 

에포크타임의 표현 Instant, now() ofEpochSecond() 객체생성, toEpochMilli() 밀리초단위의 생성, Date와의 변

에포크타임은 사람에겐 불편하지만 계산하기가 쉽다. 사람이 사용하는 날짜와 시간은 여러 진법이 섞여있어서 계산하기 어렵다. https://standout.tistory.com/1246 epoch 에포크란? epoch 에포크란? 보통 197

standout.tistory.com

 

 

ZonedId 특정지역에 따른 시간, 일관된 시간을 위해 ZoneOffset이 사용된다.

https://standout.tistory.com/1251

 

LocalDateTime, ZonedDateTime: now() of() 날짜/시간지정, ZonedId 특정지역, ZoneOffset 일관된 시간대를 구하다

앞서 언급한것과 같이 LocalDate과 LocalTime을 합쳐놓은것이 LocalDateTime, LocalDateTime에 시간대를 추가한것이 ZonedDateTime이다. https://standout.tistory.com/1245#og_1704934959811 java.time패키지: 객체생성 now() of() pars

standout.tistory.com

 

 

Period 와 Duration

Period는 날짜의 차이를, Duration은 시간의 차이를 계산한다. 이 객체의 사칙연산 및 특정요소 추력 외 유용한 메서드가 제공된다.

https://standout.tistory.com/1363

 

Period와 Duration 날짜/시간의 차이 사칙연산, 유용한 메서드

Period 와 Duration Period는 날짜의 차이를, Duration은 시간의 차이를 계산한다. between() 두 날짜의 차이를 나타내는 Period는 between()으로 얻을 수 있다. LocalDate startDate = LocalDate.of(2023, 10, 15); LocalDate endDate

standout.tistory.com

 

 

파싱 parsing format()을 통해

날짜와 시간을 원하는 형식으로 출력하고 해석할 수 있다.

https://standout.tistory.com/1364

 

파싱과 포맷, 날짜와 시간을 원하는 형식으로 출력하고 해석하다

파싱 parsing format() 날짜와 시간을 원하는 형식으로 출력하고 해석하는것. java.time.format패키지중 DateTimeFormatter가 핵심 클래스. 상수로 정의된 여러 형식이 있다. ISO_DATE_TIME ISO 8601 형식의 날짜 및

standout.tistory.com