[JAVA] 16. λ‚ μ§œμ™€ μ‹œκ°„ & ν˜•μ‹ν™”

2022. 5. 7. 23:25ㆍJAVA/μžλ°”μ˜ 정석

728x90

 

1️⃣ Calendar 와 Date 

Date λŠ” λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‹€λ£° λͺ©μ μœΌλ‘œ jdk1.0 λΆ€ν„° μ œκ³΅λ˜μ–΄μ˜¨ ν΄λž˜μŠ€μ΄λ‹€. jdk1.0 이 μ œκ³΅ν•˜λŠ”  클래슀의 μˆ˜μ™€ κΈ°λŠ₯은 μ§€κΈˆκ³Ό 비ꡐ할 수 없을 μ •λ„λ‘œ λΉˆμ•½ν•˜λ‹€. Date 클래슀 μ—­μ‹œ κΈ°λŠ₯이 λΆ€μ‘±ν–ˆκΈ° λ•Œλ¬Έμ— μ„œλ‘˜λŸ¬ Calendar λΌλŠ” μƒˆλ‘œμš΄ 클래슀λ₯Ό λ‹€μŒ 버전인 jdk1.1λΆ€ν„° μ œκ³΅ν•˜κΈ° μ‹œμž‘ν–ˆλ‹€. Calendar λŠ” Date λ³΄λ‹€λŠ” 훨씬 λ‚˜μ•˜μ§€λ§Œ λͺ‡ 가지 단점듀이 λ°œκ²¬λ˜μ—ˆλ‹€.

 

λŠ¦μ€ 감이 μžˆμ§€λ§Œ Jdk1.8λΆ€ν„° java.time νŒ¨ν‚€μ§€λ‘œ 기쑴의 단점듀을 κ°œμ„ ν•œ μƒˆλ‘œμš΄ ν΄λž˜μŠ€λ“€μ΄ μΆ”κ°€λ˜μ—ˆλ‹€. 

 

- Calendar 와 GregorianCalendar  

Calendar λŠ” μΆ”μƒν΄λž˜μŠ€μ΄λ―€λ‘œ 직접 객체λ₯Ό 생성할 수 μ—†κ³ , λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œ μ™„μ „νžˆ κ΅¬ν˜„λœ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μ–»μ–΄μ•Ό ν•œλ‹€. 

 

Calendar cal = Calendar.getInstance();

-> getInstance() λŠ” Calendar 클래슀λ₯Ό κ΅¬ν˜„ν•œ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•œλ‹€. 

 

Calendar λ₯Ό 상속받아 μ™„μ „νžˆ κ΅¬ν˜„ν•œ ν΄λž˜μŠ€λ‘œλŠ” GregorianCalendar 와 BuddhistCalendar κ°€ μžˆλŠ”λ° getInstance()λŠ” μ‹œμŠ€ν…œμ˜ ꡭ가와 지역섀정을 ν™•μΈν•΄μ„œ νƒœκ΅­μΈ κ²½μš°μ—λŠ” BuddhistCalendar λ₯Ό λ°˜ν™˜ν•˜κ³ , κ·Έ μ™Έμ—λŠ” GregorianCalendar μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•œλ‹€. 

 

GregorianCalendarλŠ” Calendarλ₯Ό 상속받아 μ˜€λŠ˜λ‚  전세계 κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜κ³  μžˆλŠ” 그레고리λ ₯에 맞게 κ΅¬ν˜„ν•œ κ²ƒμœΌλ‘œ νƒœκ΅­μ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€ κ΅­κ°€μ—μ„œλŠ” GregorianCalendarλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

 

μΈμŠ€ν„΄μŠ€λ₯Ό 직접 μƒμ„±ν•΄μ„œ μ‚¬μš©ν•˜μ§€ μ•Šκ³  이처럼 λ©”μ„œλ“œλ₯Ό 톡해 μΈμŠ€ν„΄μŠ€λ₯Ό λ°˜ν™˜ν•˜κ²Œ ν•˜λŠ” μ΄μœ λŠ” 

μ΅œμ†Œν•œμ˜ λ³€κ²½μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ΄ λ™μž‘ν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€. 

 

 

- Date 와 Calendarκ°„μ˜ λ³€ν™˜

Calendarκ°€ μƒˆλ‘œ μΆ”κ°€λ˜λ©΄μ„œ DateλŠ” λŒ€λΆ€λΆ„μ˜ λ©”μ„œλ“œκ°€ deprecated λ˜μ—ˆμœΌλ―€λ‘œ 잘 μ‚¬μš©λ˜μ§€λŠ” μ•ŠλŠ”λ‹€.

κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  μ—¬μ „νžˆ Dateλ₯Ό ν•„μš”λ‘œ ν•˜λŠ” λ©”μ„œλ“œλ“€μ΄ 있기 λ•Œλ¬Έμ— Calendar λ₯Ό Date둜 λ˜λŠ” κ·Έ λ°˜λŒ€λ‘œ λ³€ν™˜ν•  일이 생긴닀. 

 

1. Calendar λ₯Ό Date둜 λ³€ν™˜
Calendar cal = Calendar.getInstance();
Date d = new Date(cal.getTimeInMillis());

2. Date λ₯Ό Calendar둜 λ³€ν™˜
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);

 

-> getInstance()λ₯Ό ν†΅ν•΄μ„œ 얻은 μΈμŠ€ν„΄μŠ€λŠ” 기본적으둜 ν˜„μž¬ μ‹œμŠ€ν…œμ˜ λ‚ μ§œμ™€ μ‹œκ°„μ— λŒ€ν•œ 정보λ₯Ό λ‹΄κ³  μžˆλ‹€ 

μ›ν•˜λŠ” λ‚ μ§œμ™€ μ‹œκ°„μœΌλ‘œ μ„€μ •ν•˜λ €λ©΄ set λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

μ—¬κΈ°μ„œλŠ” get λ₯Ό μ΄μš©ν•΄μ„œ μ›ν•˜λŠ” ν•„λ“œμ˜ 값을 μ–»μ–΄μ˜€λŠ” 방법을 보여쀀닀. 

 

ν•œκ°€μ§€ μ£Όμ˜ν•  점은 get(Calendar.MONTHS)둜 μ–»μ–΄μ˜€λŠ” κ°’μ˜ λ²”μœ„κ°€ 1 ~ 12 κ°€ μ•„λ‹Œ 0 ~ 11 μ΄λΌλŠ” 점이닀. 

κ·Έλž˜μ„œ 값이 0이면 1월을 μ˜λ―Έν•˜κ³  11λ©΄ 12월을 μ˜λ―Έν•œλ‹€. 

 

-> 두 λ‚ μ§œκ°„μ˜ 차이λ₯Ό κ΅¬ν•˜λŠ” 예제둜, λ‚ μ§œμ™€ μ‹œκ°„μ„ μ›ν•˜λŠ” κ°’μœΌλ‘œ λ³€κ²½ν•˜λ €λ©΄ set λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

두 λ‚ μ§œκ°„μ˜ 차이λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” 두 λ‚ μ§œλ₯Ό μ΅œμ†Œ λ‹¨μœ„μΈ 초 λ‹¨μœ„λ‘œ λ³€κ²½ν•œ λ‹€μŒ κ·Έ 차이λ₯Ό κ΅¬ν•˜λ©΄ λœλ‹€.

 

 

 

-> 두 개의 μ‹œκ°„ λ°μ΄ν„°λ‘œλΆ€ν„° 초 λ‹¨μœ„λ‘œ 차이λ₯Ό κ΅¬ν•œ λ‹€μŒ μ‹œλΆ„μ΄ˆλ‘œ λ°”κΏ” 좜λ ₯ν•˜λŠ” μ˜ˆμ œμ΄λ‹€ .

κ°€μž₯ 큰 λ‹¨μœ„μΈ μ‹œκ°„ λ‹¨μœ„ 3600초둜 λ‚˜λˆ„κ³  남은 λ‚˜λ¨Έμ§€λ₯Ό λ‹€μ‹œ λΆ„ λ‹¨μœ„ 60초둜 λ‚˜λˆ„λ©΄ κ·Έ λ‚˜λ¨Έμ§€λŠ” 초 λ‹¨μœ„μ˜ 값이 λœλ‹€.

 

-> add λ₯Ό μ‚¬μš©ν•˜λ©΄ μ§€μ •ν•œ ν•„λ“œμ˜ 값을 μ›ν•˜λŠ” 만큼 증가 λ˜λŠ” κ°μ†Œμ‹œν‚¬ 수 있기 λ•Œλ¬Έμ— add λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ©΄ νŠΉμ • λ‚ μ§œ λ˜λŠ” μ‹œκ°„μ„ 기점으둜 ν•΄μ„œ 일정기간 μ „ν›„μ˜ λ‚ μ§œμ™€ μ‹œκ°„μ„ μ•Œμ•„λ‚Ό 수 μžˆλ‹€.  (λ‹€λ₯Έ ν•„λ“œμ— 영ν–₯ O)

 

roll λ₯Ό μ‚¬μš©ν•˜λ©΄ μ§€μ •ν•œ ν•„λ“œμ˜ 값을 증가 λ˜λŠ” κ°μ†Œμ‹œν‚¬ 수 μžˆλŠ”λ° add λ©”μ„œλ“œμ™€μ˜ 차이점은 λ‹€λ₯Έ ν•„λ“œμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것이닀. 

 

 

2️⃣ ν˜•μ‹ν™” 클래슀 

 

- DecimalFormat

ν˜•μ‹ν™” 클래슀 μ€‘μ—μ„œ 숫자λ₯Ό ν˜•μ‹ν™”ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” 것이 DecimalFormat이닀. 

DecimalFormatλ₯Ό μ΄μš©ν•˜λ©΄ 숫자 데이터λ₯Ό μ •μˆ˜, 뢀동 μ†Œμˆ˜μ , κΈˆμ•‘ λ“±μ˜ λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ ν‘œν˜„ν•  수 있으며, λ°˜λŒ€λ‘œ μΌμ •ν•œ ν˜•μ‹μ˜ ν…μŠ€νŠΈ 데이터λ₯Ό 숫자둜 μ‰½κ²Œ λ³€ν™˜ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€. 

DecimalFormat을 μ‚¬μš©ν•˜λŠ” 방법은 κ°„λ‹¨ν•˜λ‹€.

λ¨Όμ € μ›ν•˜λŠ” 좜λ ₯ν˜•μ‹μ˜ νŒ¨ν„΄μ„ μž‘μ„±ν•˜μ—¬ DecimalFormatμΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•œ λ‹€μŒ, 

좜λ ₯ν•˜κ³ μž ν•˜λŠ” λ¬Έμžμ—΄λ‘œ format λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ μ›ν•˜λŠ” νŒ¨ν„΄ 에 맞게 λ³€ν™˜λœ λ¬Έμžμ—΄μ„ μ–»κ²Œ λœλ‹€.

 

-> parse λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ κΈ°ν˜Έμ™€ λ¬Έμžκ°€ ν¬ν•¨λœ λ¬Έμžμ—΄μ„ 숫자둜 μ‰½κ²Œ λ³€ν™˜ν•  수 μžˆλ‹€. 

Number ν΄λž˜μŠ€λŠ” Integer, Double κ³Ό 같은 숫자λ₯Ό μ €μž₯ν•˜λŠ” 래퍼클래슀의 쑰상이며, doubleValue() λŠ” Number 에 μ €μž₯된 값을 double ν˜•μ˜ κ°’μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€. 

 

 

- simpleDateFormat 

: λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ 좜λ ₯ν•  수 있게 ν•΄μ€€λ‹€. 

2022/05/07

 

 

3️⃣ java.time νŒ¨ν‚€μ§€

Date와 Calendar κ°€ 가지고 μžˆλŠ” 단점듀을 ν•΄μ†Œν•˜κΈ° μœ„ν•΄ λ“œλ””μ–΄ jdk1.8λΆ€ν„° java.time νŒ¨ν‚€μ§€κ°€ μΆ”κ°€λ˜μ—ˆλ‹€. 

-> μœ„μ˜ νŒ¨ν‚€μ§€λ“€μ— μ†ν•œ ν΄λž˜μŠ€λ“€μ˜ κ°€μž₯ 큰 νŠΉμ§•μ€ String 클래슀처럼 λΆˆλ³€μ΄λΌλŠ” 것이닀.

κ·Έλž˜μ„œ λ‚ μ§œλ‚˜ μ‹œκ°„μ„ λ³€κ²½ν•˜λŠ” λ©”μ„œλ“œλ“€μ€ 기쑴의 객체λ₯Ό λ³€κ²½ν•˜λŠ” λŒ€μ‹ μ— 항상 λ³€κ²½λœ μƒˆλ‘œμš΄ 객체λ₯Ό λ°˜ν™˜ν•œλ‹€.

 

κΈ°μ‘΄ Calendar ν΄λž˜μŠ€λŠ” λ³€κ²½κ°€λŠ₯ν•˜λ―€λ‘œ λ©€ν‹° μ“°λ ˆλ“œ ν™˜κ²½μ—μ„œ μ•ˆμ „ν•˜μ§€ λͺ»ν–ˆλ‹€. 

: λ©€ν‹° μ“°λ ˆλ“œ ν™˜κ²½μ—μ„œλŠ” λ™μ‹œμ— μ—¬λŸ¬ μ“°λ ˆλ“œκ°€ 같은 객체에 μ ‘κ·Όν•  수 있기 λ•Œλ¬Έμ— λ³€κ²½ κ°€λŠ₯ν•œ κ°μ²΄λŠ” 데이터가 잘λͺ»λ  κ°€λŠ₯성이 있으며, 이λ₯Ό μ“°λ ˆλ“œμ— μ•ˆμ „ν•˜μ§€ μ•Šλ‹€κ³  ν•œλ‹€. 

 

- java.time νŒ¨ν‚€μ§€μ˜ 핡심 클래슀 

λ‚ μ§œμ™€ μ‹œκ°„μ„ ν•˜λ‚˜λ‘œ ν‘œν˜„ν•˜λŠ” Calendar ν΄λž˜μŠ€μ™€ 달리 java.time νŒ¨ν‚€μ§€μ—μ„œλŠ” λ‚ μ§œμ™€ μ‹œκ°„μ„ λ³„λ„μ˜ 클래슀둜 뢄리해 λ†“μ•˜λ‹€.

μ‹œκ°„μ„ ν‘œν˜„ν•  λ•ŒλŠ” LocalTime 클래슀λ₯Ό μ‚¬μš©ν•˜κ³ , λ‚ μ§œλ₯Ό ν‘œν˜„ν•  λ•ŒλŠ” LocalDate 클래슀λ₯Ό μ‚¬μš©ν•œλ‹€.

그리고 λ‚ μ§œμ™€ μ‹œκ°„μ΄ λͺ¨λ‘ ν•„μš”ν•  λ•ŒλŠ” LocalDateTime 클래슀λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

여기에 μ‹œκ°„λŒ€(time-zone)κΉŒμ§€ 닀뀄야 ν•œλ‹€λ©΄ ZoneDateTime 클래슀λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

 

λ‚ μ§œμ™€ μ‹œκ°„μ˜ 간격을 ν‘œν˜„ν•˜κΈ° μœ„ν•œ ν΄λž˜μŠ€λ„ μžˆλŠ”λ° PeriodλŠ” 두 λ‚ μ§œκ°„μ˜ 차이λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•œ 것이고, 

Duration은 μ‹œκ°„μ˜ 차이λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•œ 것이닀. 

 

- 객체 μƒμ„±ν•˜κΈ° now(), of()

now() λŠ” ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„μ„ μ €μž₯ν•˜λŠ” 객체λ₯Ό μƒμ„±ν•œλ‹€. 

of() λŠ” λ‹¨μˆœνžˆ ν•΄λ‹Ή ν•„λ“œμ˜ 값을 μˆœμ„œλŒ€λ‘œ 지정해 주기만 ν•˜λ©΄ λœλ‹€. 

 

λ‚ μ§œμ™€ μ‹œκ°„μ—μ„œ νŠΉμ • ν•„λ“œμ˜ κ°’λ§Œμ„ 얻을 λ•ŒλŠ” get() μ΄λ‚˜ get으둜 μ‹œμž‘ν•˜λŠ” μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.

 

 

- LocalDate와 LocalTime

객체λ₯Ό μƒμ„±ν•˜λŠ” 방법은 ν˜„μž¬μ˜ λ‚ μ§œμ™€ μ‹œκ°„μ„ LocalDate와 LocalTime으둜 각각 λ³€ν™˜ν•˜λŠ” now()와 μ§€μ •λœ λ‚ μ§œμ™€ μ‹œκ°„μ„ LocalDate와 LocalTime객체λ₯Ό μƒμ„±ν•˜λŠ” of() κ°€ μžˆλ‹€. λ‘˜λ‹€ static λ©”μ„œλ“œμ΄λ‹€. 

 

νŠΉμ • 값을 κ°€μ Έμ˜¬ λ•ŒλŠ” get() λ˜λŠ” get으둜 μ‹œμž‘ν•˜λŠ” μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ”λ° μ£Όμ˜ν•  점은 Calendar와 달리 μ›”μ˜ λ²”μœ„κ°€ 1 ~ 12이고, μš”μΌμ€ μ›”μš”μΌμ΄ 1 μΌμš”μΌμ΄ 7이닀. 

 

 

ν•„λ“œμ˜ 값을 λ³€κ²½ν•˜κΈ° - with(), plus(), minus() 

λ‚ μ§œμ™€ μ‹œκ°„μ—μ„œ νŠΉμ • ν•„λ“œ 값을 λ³€κ²½ν•˜λ €λ©΄, with으둜 μ‹œμž‘ν•˜λŠ” λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€

with()을 μ‚¬μš©ν•˜λ©΄ μ›ν•˜λŠ” ν•„λ“œλ₯Ό 직접 지정할 수 μžˆλ‹€. 

 

❗️ 그리고 μ£Όμ˜ν•  점은 ν•„λ“œλ₯Ό λ³€κ²½ν•˜λŠ” λ©”μ„œλ“œλ“€μ€ 항상 μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•΄μ„œ λ°˜ν™˜ν•˜λ―€λ‘œ λŒ€μž… μ—°μ‚°μžλ₯Ό 같이 μ‚¬μš©ν•΄μ•Όν•œλ‹€!

 

 

 

 

- Instant

InstantλŠ” μ—ν¬ν¬νƒ€μž„(EPOCH TIME, 1970-01-01 00:00:00 UTC)λΆ€ν„° 경과된 μ‹œκ°„μ„ λ‚˜λ…Έμ΄ˆ λ‹¨μœ„λ‘œ ν‘œν˜„ν•œλ‹€. 

μ‚¬λžŒμ—κ² λΆˆνŽΈν•˜μ§€λ§Œ, 단일 μ§„λ²•μœΌλ‘œλ§Œ 닀루기 λ•Œλ¬Έμ— κ³„μ‚°ν•˜κΈ° 쉽닀.

 

InstantλŠ” 항상 UTC(+00:00)λ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜κΈ° λ•Œλ¬Έμ— LocalTimeκ³ΌλŠ” 차이가 μžˆμ„ 수 μžˆλ‹€.

예λ₯Ό λ“€μ–΄ ν•œκ΅­μ€ μ‹œκ°„λŒ€κ°€ +09:00μ΄λ―€λ‘œ Instant와 LocalTimeκ°„μ—λŠ” 9μ‹œκ°„μ˜ 차이가 μžˆλ‹€. 

 

UTCλŠ” Coordinated Universal Time의 μ•½μžλ‘œ 세계 ν˜‘μ •μ‹œλΌκ³  ν•˜λ©°, 1972λ…„ 1μ›” 1일뢀터 μ‹œν–‰λœ κ΅­κ°€ ν‘œμ€€μ‹œμ΄λ‹€. 

이전에 μ‚¬μš©λœ GMT와 UTCλŠ” 거의 κ°™μ§€λ§Œ UTCκ°€ μ’€ 더 μ •ν™•ν•˜λ‹€.

 

- LocalDateTime κ³Ό ZonedDateTime

LocalDate와 LocalTime을 합쳐놓은 것이 LocalDateTime이고, LocalDateTime에 μ‹œκ°„λŒ€λ₯Ό μΆ”κ°€ν•œ 것이 ZonedDateTime이닀. 

 

LocalDate에 μ‹œκ°„ 정보λ₯Ό μΆ”κ°€ν•˜λŠ” atTime()을 μ‚¬μš©ν•˜λ©΄ LocalDateTime을 얻을 수 μžˆλŠ” κ²ƒμ²˜λŸΌ, LocalDateTime에 atZone() 으둜 μ‹œκ°„λŒ€ 정보λ₯Ό μΆ”κ°€ν•˜λ©΄ ZonedDateTime을 얻을 수 μžˆλ‹€. 

 

 

 

 

- TemporalAdjusters

자주 μ“°μΌλ§Œν•œ λ‚ μ§œ 계산듀을 λŒ€μ‹  ν•΄μ£ΌλŠ” λ©”μ„œλ“œλ₯Ό μ •μ˜ν•΄λ†“μ€ 것이 TemporalAdjusters이닀. 

-> 보톡은 TemporalAdjusters에 μ •μ˜λœ λ©”μ„œλ“œλ‘œ μΆ©λΆ„ν•˜κ² μ§€λ§Œ, ν•„μš”ν•˜λ©΄ 자주 μ‚¬μš©λ˜λŠ” λ‚ μ§œ 계산을 ν•΄μ£ΌλŠ” λ©”μ„œλ“œλ₯Ό 직접 λ§Œλ“€ μˆ˜λ„ μžˆλ‹€. 

 

 

- Period와 Duration

PeriodλŠ” λ‚ μ§œμ˜ 차이λ₯Ό, Duration은 μ‹œκ°„μ˜ 차이λ₯Ό κ³„μ‚°ν•˜λŠ” 것이닀. 

 

between() 

: Period, Duration은 between을 ν†΅ν•΄μ„œ 얻을 수 μžˆλ‹€. 

 

until() 

:until() 은 between()κ³Ό 거의 같은 일을 ν•œλ‹€. between()은 staticλ©”μ„œλ“œμ΄κ³ , until() 은 μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλΌλŠ” 차이가 μžˆλ‹€. 

 

 

 

- νŒŒμ‹±κ³Ό 포맷

λ¬Έμžμ—΄μ„ λ‚ μ§œ λ˜λŠ” μ‹œκ°„μœΌλ‘œ λ³€ν™˜ν•˜λ €λ©΄ static λ©”μ„œλ“œ parse()λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. 

 

 

 

 

728x90