1. 날짜와 시간
1.1 Calendar 와 Date
Calendar와 GregorianCalendar
- Calendar는 추상 클래스이며, 이를 상속받아 구현한 클래스가 GregorianCalendar(태국 외 모든 국가),
BuddihistCalendar(태국)
- .getInstance() 를 통해 완성된 객체를 반환하여 사용하거나, (static 메소드)
상속받아 구현된 GregorianCalendar를 이용해서 인스턴스를 반환하여 사용한다.
//1. Calendar를 Date로 변환
Calendar cal = Calendar.getInstance();
Data d = new Date(cal.getTimeInMillis()); //Date(long date)
//2. Date를 Calendar로 변환
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);
2. 형식화 클래스
2.1 DecimalFormat
- 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할수 있다.
일정한 형식의 텍스트 데이털르 숫자로 변환하는 것도 가능하다.
사용방법
double number = 123456.789;
DecimalFormat df = new DecimalFormat("#.#E0");
String result = df.format(number);
- parse 메소드는 기호와 문자가 포함된 문자열을 숫자로 변환 가능
Integer.parseInt 는 콤마가 포함된 문자열을 숫자로 변환하지 못한다.
2.2 SimpleDateFormat
- DateFormat을 상속받은 클래스
- getDateInstance()를 이용하여 반환되는 객체는 SimpleDateFormat 객체이다.
사용방법
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd");
String result = df.format(today);
2.3 ChoiceFormat
- 특정 범위에 속하는 값을 문자열로 변환해준다.
- 경계값(범위)는 double형 오름차순으로 정렬
- 치환될 문자열의 개수는 경계값에 의해 정의된 범위의 개수와 일치해야한다.
- 패턴화하여 사용할수도 있다. (구분자로 #(경계값을 범위에 포함)과 <(경계값을 범위에 미포함)를 제공한다.)
2.3 MessageFormat
- 데이터를 정해진 양식에 맞게 출력할수 있도록 해준다
3. java.time 패키지
- String 클래스처럼 immutable 하다.
- 날짜나 시간을 변경하는 메소드들은 기존의 객체를 변경하는 대신 항상 변경된 새로운 객체를 반환한다.
3.1 java.time 패키지의 핵심 클래스
- 날짜와 시간을 별도의 클래스로 분리
LocalDate + LocalTime => LocalDateTime
날짜 시간 날짜&시간
LocalDateTime + 시간대 => ZonedDateTIme
- Period : 두 날짜간의 차이를 표현
Duration : 시간의 차이를 표현
- 객체 생성
1) now() : 현재 날짜와 시간을 저장하는 객체를 생성
2) of() : 단순히 해당 필드의 값을 순서대로 지정
TemporalUnit : 날짜와 시간의 단위를 정의 (구현 : ChronoUnit(열거형))
TemporalField : 년, 월, 일 등 날짜와 시간의 필드를 정의 (구현 : ChronoField(열거형))
- 특정 날짜와 시간에서 지정된 단위의 값을 더하거나 뺄 때는 plus() 또는 minus()에 값과 함께 열거형 ChronoUnit 사용
3.2 LocalDate와 LocalTime
- Calendar와 다르게 월의 범위가 1~12, 요일은 월요일 1~일요일 7
- 특정 필드값을 변경하려면 with으로 시작하는 메소드를 사용(항상 변경된 새로운 새객체 반환)
- 날짜와 시간의 비교 - isAfter(), isBefore(), isEqual()
3.3 instant
- 에포크 타임(1970-01-01 00:00:00 UTC) 부터 경과된 시간을 나노초 단위로 표현
- Instant 와 Date 간의 변환
static Date from(Instnat instant) // instant -> Date
Instant toInstant() // Date -> Instant
3.4 LocalDateTime 과 ZonedDateTime
3.5 TemporalAdjusters
- 자주 쓰일만한 날짜 계산들을 대신 해주는 메소드를 정의해둔 클래스
3.6 Period와 Duration
- between() : 두날짜(시간) 사이의 차이를 나타낸다. 이전이면 양수, 이후면 음수 (static메소드)
비슷한 메소드로 until() 이 있다.(인스턴스 메소드)
3.7 파싱과 포맷
'Programming > Java \ Spring' 카테고리의 다른 글
🔥자바스터디🔥 자바의 정석 CH12 지네릭스, 열거형, 어노테이션 (0) | 2021.07.04 |
---|---|
🔥자바스터디🔥 자바의 정석 CH11 컬렉션프레임웍 (0) | 2021.06.27 |
🔥자바스터디🔥 자바의 정석 CH9 java.lang패키지와 유용한 클래스 (1) | 2021.06.20 |
🔥자바스터디🔥 자바의 정석 CH8 예외처리 (0) | 2021.06.20 |
🔥자바스터디🔥 객체지향 개념을 살려서 스터디관리 프로그램 만들기 (0) | 2021.06.13 |