본 글은 책 자바의 정석을 ref 하여 요약한 글입니다.
자바의 날짜와 시간 클래스 변화 과정
Date -> Calendar -> time패키지
* time패키지를 사용하는 것이 좋지만 Calendar를 오랫동안 사용했기 때문에 하위 호환성을 위해 알아두면 좋다.
Date
특정 시점의 날짜 정보를 저장하는 역할만 한다.
Calendar
시스템의 국가와 지역 설정을 확인하여 현재 날짜와 시간를 사용
getInstance로 객체를 가져온다.
get(Calendar.MONTH)를 이용하여 날짜, 시간 등을 사용할 수 있다.
* MONTH의 경우 1~12가 아닌 0~11로 되어있다.
set(년, 월, 일, 시간, 분, 초)를 이용하여 시간을 지정할 수 있다.
* 년이 맨 앞 기준으로 오버 로딩이 돼있으므로 맞춰서 사용
* 연도 없이 시, 분, 초 등을 사용할 경우 set(Calendar.HOUR, 3)을 이용해서 따로 지정해야 함
두 날짜의 차이를 구할 때는 getTimeInMillis()를 이용해서 구한다. ms단위로 반환하기 때문에
1000을 나눈 후 초단위로 사용하면 된다.
add(Calendar.MONTH, -10)를 이용하여 이전 시간, 이후 시간을 구해줄 수 있다.
* add()는 다른 속성의 날짜, 시간을 계산하지만, roll() 메서드는 다른 속성에 영향을 주지 않는다.
자바time패키지
LocalTime - 시간 클래스
LocalDate - 날짜 클래스
LocalDateTime - 날짜 시간 클래스
ZonedDateTime - 특정 타임존의 날짜 시간 클래스 (UTC, ASIA/Seoul..)
Instant - 특정 시점의 타임스탬프 클래스 (차이를 비교, 순서를 비교 하는데 유리)
시간 지정
now() - 현재 시간
of() - 인수로 지정
parse() - 문자열을 시간으로 지정
시간 가져오기
get...() - 지정 시간속성 가져오기
시간 조작
with...() - 특정 시간 변경
plus...() - 특정 시간 더하기
minus...() - 특정 시간 빼기
* 변경 후 대입 필요, 항상 새로운 객체를 반환하므로 메서드 체이닝이 가능하다.
시간 비교
isAfter() - 이후 날짜 인지 비교
isBefore() - 이전 날짜 인지 비교
isEqual() - 동일 날짜 인지 비교
LocalDate, LocalTime < - > LocalDateTime
LocalDate, LocalTime -> LocalDateTime
* of(LocalDate, LocalTime)
LocalDate, LocalTime <- LocalDateTime
* toLocalDate()
* toLocalTime()
Period, Duration,ChronoUnit
Period - 년, 달, 일
Duration - 시, 분, 초, 나노초
ChronoUnit - 전체시간을 기준으로 차이를 리턴
between()을 사용하여 두 시간을 비교한다.
반환 시간은 get...()으로 확인한다.
형식화 클래스
DecimalFormat
✔ 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 표준화
new DecimalFormat("패턴")
format(입력)
✔ 포맷을 되돌리는 것도 가능하다.
parse(패턴에 맞게 표기된 형태)
패턴
입력:12345.6789
✔ 0 - 값이 없을때도 0을 표기
0 -> 12345
0.0 -> 12345.6789
000000.00000 -> 012345.67890
✔ # - 값이 없을때는 표시안함
# -> 12345
#.# -> 12345.6789
######.##### -> 12345.6789
✔ E - 지수기호
#E0 -> .1E5
* #과 E를 같이쓰면 소수점 첫째자리를 표기함.
#.#E0 -> 1.2E4
##.#E0 -> 1.2E4
* #.#과 E를 같이쓰면 정수는 한자리수만 표기함
0E0 -> 1E4
* 0과 E를 같이쓰면 소수점을 표기하지 않음.
0.0E0 -> 1.2E4
00.0E0 -> 12.3E3
* #과 다르게 0은 정수 자리수를 패턴에 맞게 맞춤
SimpleDateFormat
✔ 날짜를 출력할 때 사용한다. 사용방법이 간단하다.
new SimpleDateFormat("형식")
format(Date)
* Date 클래스를 인수로 받는다.
'프로그래밍 > 자바' 카테고리의 다른 글
[Java] equals()와 hashCode() 사용, HashSet에서의 활용 (0) | 2022.07.30 |
---|---|
11장 컬렉션 프레임 워크 (0) | 2022.07.28 |
8장 예외처리, 9장 유틸클래스 (0) | 2022.07.28 |
6장, 7장 객체지향 프로그래밍 (0) | 2022.07.28 |
3장 연산자, 4장 조건문과 반복문, 5장 배열 (0) | 2022.07.28 |