9.1 Date์ Calendar ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๊ธฐ
Date๋ ์ผ์, ํน์ ์ ์๊ฐ์ ๋ณด๊ดํ๋ ํด๋์ค์ด๊ณ Calendar๋ ์ฐ, ์, ์ผ, ์, ๋ถ, ์ด ๋จ์๋ก ๊ฐ๋ณ์ ์ผ๋ก ์ค์ /์ทจ๋/๊ฐ์ฐ/๊ฐ์ฐํ ์ ์๋ ํด๋์ค์ด๋ค.
Date ํด๋์ค ์ฌ์ฉํ๊ธฐ
//1
Date date1 = new Date();
System.out.println(date1);
//2
Date date2 = new Date(5000);
System.out.println(date2);
1๋ฒ ์ฝ๋๋ ํ์ฌ ์๊ฐ์ ์ถ๋ ฅํ๊ณ 2๋ฒ ์ฝ๋๋ 1970๋ ์์ 5000ms ์ง๋ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
Dateํด๋์ค๋ setTime์ผ๋ก ์๊ฐ์ ๋ฐ๊ฟ ์ ์์ผ๋ฏ๋ก ๋ถ๋ณ๊ฐ์ฒด๊ฐ ์๋๋ค.
Calendar ํด๋์ค ์ฌ์ฉํ๊ธฐ
Calendar calendar = Calendar.getInstance();
System.out.println(" ์บ๋ฆฐ๋์ ๊ฐ");
System.out.println(calendar);
System.out.println(" getTime์ ๊ฐ");
System.out.println(calendar.getTime());
// ::์ถ๋ ฅ๊ฐ::
// ์บ๋ฆฐ๋์ ๊ฐ
// java.util.GregorianCalendar[time=1631543616989,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=8,WEEK_OF_YEAR=38,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=256,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=33,SECOND=36,MILLISECOND=989,ZONE_OFFSET=32400000,DST_OFFSET=0]
// getTime์ ๊ฐ
// Mon Sep 13 23:33:36 KST 2021
getTime()์ ์ด์ฉํด์ผ ์ ๋ฆฌ๋ ๊ฐ์ ์ป์ ์ ์๋ค.
์บ๋ฆฐ๋ ํด๋์ค๋ Date ํด๋์ค์ ๋ฌ๋ฆฌ ์ฐ, ์, ์ผ, ์, ๋ถ, ์ด ๋จ์๋ก ๊ฐ๋ณ์ ์ผ๋ก ์ค์ , ์ทจ๋, ๊ฐ์ฐ, ๊ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
์๋ ์ฝ๋๋ฅผ ํ์ธํ์.
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MINUTE, 18); // ๋ถ๋ง ์ง์
System.out.println(calendar.getTime());
calendar.set(2222, 10, 10, 11, 12 ,13); // ๋ชจ๋ ์ง์
System.out.println(calendar.getTime());
System.out.println(calendar.get(Calendar.DATE)); // ๋ ์ง๋ง ์ถ๋ ฅ์
calendar.add(Calendar.YEAR, 2); // 2๋
ํ
System.out.println(calendar);
% ์บ๋ฆฐ๋ set ์ฃผ์์ฌํญ %
์บ๋ฆฐ๋์ ์์ ์ง์ ํ๋ ๊ฒฝ์ฐ์ ์กฐ์ฌํด์ผํ๋ ๋ถ๋ถ์ด ์๋ค. Calendarํด๋์ค๋ ์์ 0 ~ 11์ ๊ฐ์ผ๋ก ๋ณด๊ดํ๊ณ ์๋ค. ๋ฐ๋ผ์ 1์์ด๋ฉด 0์ผ๋ก ํํํ๋ ์์ผ๋ก -1ํด์ผ๋ง ํ๋ค. ์ค์๋ฅผ ํ์ง ์๋๋ก Calendarํด๋์ค์ ์์๋ฅผ ์ด์ฉํ์.
9.1.3 Dateํด๋์ค์ Calendarํด๋์ค์ ์ํธ ๊ตํ ์ค์ํ๊ธฐ
Dateํด๋์ค๋ ๋ ์ง์ ์๊ฐ์ ํ๋ฉด์ ํ์ํ๊ฑฐ๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ ๋ณด๊ดํ ์ ์๋ค. ํ์ง๋ง ๋ ์ง์ ์๊ฐ ๊ณ์ฐ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์ด์ ๋ฐ๋๋ก Calendarํด๋์ค๋ ๋ ์ง์ ์๊ฐ์ ๊ณ์ฐ์ ๊ฐ๋ฅํ์ง๋ง ๋ฌธ์์ด์ ์ํธ ๋ณํ์ด ๋ถ๊ฐ๋ฅํ๋ค..
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ก์ ๋จ์ ์ ๋ณด์ํ๊ธฐ์ํด ์ํธ ๋ณํ์ด ํ์ํ๋ค.
- Calendar -> Date
- getTime()์ ์ด์ฉํ๋ฉด ์ธ์คํด์ค๊ฐ ๋ณด๊ดํ ์๊ฐ์ Date ์ธ์คํด์ค๋ก ๋ฐํํ๋ค.
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
- Date -> Calendar
- setTime(Date ์ธ์คํด์ค) ๋ฅผ ์ด์ฉํ๋ค.
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
์ด ๋ ํด๋์ค ๊ฐ ๋ณํ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์์๋์.
9.1 Date and Time API ์ฌ์ฉํ๊ธฐ
๊ธฐ์กด์ Date, Calendar ๋ ์ง ํด๋์ค๋ค์ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ด ํน์ง๋ค์ด ์๋ค.
๋ถ๋ณ ๊ฐ์ฒด๊ฐ ์๋๋ผ ์ค๋ฅ์ ์์ธ์ด ๋๊ธฐ๋ ํ๊ณ ํ์์ ๋ฐ๋ผ ์๋ก๊ฐ์ ๋ณํ๋ ํ์ํ๋ค...(๋ถํธ)
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด์ํ๊ธฐ ์ํด์ ์๋ฐ 8 ์์ Date and Time API๊ฐ ์ถ๊ฐ ๋์๋ค.
9.2.1 Date and Time API์ ์ฅ์
- ๋ ์ง, ์๊ฐ, ์ผ์๋ฅผ ๊ฐ๊ฐ ๋ค๋ฅธ ํด๋์ค๋ก ๋๋์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ์ฐ, ์, ์ผ ๋ฐ๋ก ์ง์ ํ์ฌ ์ทจ๋ํ ์ ์์ผ๋ฉฐ ์ธ์คํด์ค ๋ํ ์์ฑ ๊ฐ๋ฅํ๋ค.
- ์ฐ, ์, ์ผ์ ๊ณ์ฐ์ด ๊ฐ๋ฅํ๋ค.
- ๋ถ๋ณ ๊ฐ์ฒด์ด๋ค.
๋ ์ง, ์๊ฐ, ์ผ์, ๋ณ๋๋ก ์ทจ๊ธ
- ๋ ์ง => java.time.LocalDate ํด๋์ค (๋ ์ง๋ง)
- ์๊ฐ => java.time.LocalTime ํด๋์ค (์๊ฐ๋ง)
- ์ผ์ => java.time.LocalDateTime ํด๋์ค (๋ ์ง ๋ฐ ์๊ฐ)
LocalDate date = LocalDate.now();
System.out.println(date); // 2021-09-13
LocalTime time = LocalTime.now();
System.out.println(time); // 23:55:33.855146
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime); // 2021-09-13T23:55:33.855196
of ๋ฉ์๋ ์ฌ์ฉํ์ฌ ๋ ์ง์ ์๊ฐ ์ง์ ํ๊ธฐ
System.out.println(LocalDateTime.of(2021, Month.SEPTEMBER, 14, 0, 12));
์ถ๋ ฅ๊ฐ : 2021-09-14T00:12
๊ฐ ํ๋๊ฐ์ ๊ฐ๋ณ๋ก ์ทจ๋ํ๊ธฐ
LocalDateTime localDateTime = LocalDateTime.of(2021, Month.SEPTEMBER, 14, 0, 12);
localDateTime.getYear();
localDateTime.getMonth();
localDateTime.getSecond();
์ ์ฒ๋ผ ๊ฐ ํ๋๊ฐ์ ๋ฉ์๋๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ฐ, ์, ์ผ ๊ณ์ฐ ๊ฐ๋ฅ!
LocalDateTime localDateTime = LocalDateTime.of(2021, Month.SEPTEMBER, 14, 0, 12);
System.out.println(localDateTime.plusDays(3));
System.out.println(localDateTime.minusDays(120));
System.out.println(localDateTime.plusMinutes(22));
System.out.println(localDateTime);
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋ ์ง๋ฅผ ๊ฐ์ ธ์๋ ๊ฐ๊ฐ์ ๋ถ๋ณ ๊ฐ์ฒด๊ธฐ ๋๋ฌธ์ ์ด๋ก ์ธํด์ ์๋ ์ธ์คํด์ค์ ๋ ์ง๊ฐ ๋ฐ๋์ง ์๋๋ค.
9.3 ๋ ์ง ํด๋์ค์ ๋ฌธ์์ด ์ํธ ๊ตํํ๊ธฐ
9.3์ ์์ ๋ ์ง ํด๋์ค์ธ Date๋ฅผ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ ์๋ค.
9.3.1 ๋ ์ง ํด๋์ค๋ฅผ ์์์ ํ์์ผ๋ก ๋ฌธ์์ด ์ถ๋ ฅํ๊ธฐ
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy๋
MM์ddHHmmss");
System.out.println(dateFormat.format(date));
dateFormat์ ํตํด ๋ ์ง ์ถ๋ ฅ ํ์์ ์ ํ๋ฉด ๊ทธ ํํ๋ก date๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
SimpleDateFormat์์ ์ด์ฉํ ์ ์๋ ํจํด ๋ฌธ์๊ฐ ์ ์๋์ด ์์ผ๋ฏ๋ก ์ฐพ์์ ์ฌ์ฉํ๋ฉด ๋๋ค.
9.3.2 ๋ฌธ์์ด๋ก ํํ๋ ๋ ์ง๋ฅผ Date ํด๋์ค๋ก ํํํ๊ธฐ
DateFormat dateFormat = new SimpleDateFormat("yyyy๋
MM์ddHHmmss");
try {
Date date = dateFormat.parse("2021๋
09์11223344");
System.out.println(date);
} catch (ParseException exception) {
System.out.println(exception.getMessage());
}
์ถ๋ ฅ๊ฐ : Sat Sep 11 22:33:44 KST 2021
dateFormat์ ์ง์ ํ๋๋ก ์ ํ ๋ฌธ์์ด์ parseํ๋ฉด ํด๋นํ๋ ๋ ์ง/์๊ฐ ๊ฐ๋ง ๋ฝ์์ Date ์ธ์คํด์ค๋ฅผ ๋ง๋ ๋ค.
์ถ๊ฐ์ ์ผ๋ก SimpleDateFormatํด๋์ค๋ ์ค๋ ๋ ์ธ์ดํ๊ฐ ์๋๋ผ๊ณ ํ๋ ์์๋์.
9.4 Date and Time API๋ก ๋ ์ง/์๊ฐ ํด๋์ค์ ๋ฌธ์์ด ์ํธ ๊ตํํ๊ธฐ
LocalDateTimeํด๋์ค ๋ฑ์ Data and Time API์ ํด๋์ค๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ DateTimeFormatter ํด๋์ค๋ฅผ ์ด์ฉํ๋ค.
9.4.1 ๋ ์ง/์๊ฐ ํด๋์ค๋ฅผ ์์์ ํ์์ผ๋ก ๋ฌธ์์ด ์ถ๋ ฅ
LocalDateTime date = LocalDateTime.now();
System.out.println(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS").format(date));
์ถ๋ ฅ๊ฐ : 2021/09/14 00:29:41.985
ofPattern์ผ๋ก ์ถ๋ ฅํํ๋ฅผ ์ง์ ํ๊ณ .format์ผ๋ก ์ถ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๋ค.
๋ง์ฝ LocalDate ์ฒ๋ผ ๋ ์ง๋ง ์๋ ์ธ์คํด์ค์ ์๊ฐ ๋ฌธ์์ด ํ์์ ์ง์ ํ๊ฒ ๋๋ฉด UnsupportedTemporalTypeException ์์ธ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
9.4.2 ๋ฌธ์์ด๋ก ํํ๋ ๋ ์ง๋ฅผ ๋ ์ง/์๊ฐ ํด๋์ค๋ก ๋ณํํ๊ธฐ
๋ฌธ์์ด ---> ๋ ์ง/์๊ฐ ํด๋์ค๋ก ๋ณํ์์๋ DateTimeFormatter ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค. ๋์ format์ด ์๋ parse ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
TemporalAccessor parsed = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")
.parse("2021/09/21 20:10:11");
LocalDateTime dateTime = LocalDateTime.from(parsed);
TemporalAccessor๋ฅผ from ๋ฉ์๋์ ์ธ์๋ก ๋ฐ์ผ๋ฉด LocalDateTime์ ์ป์ ์ ์๋ค.
'๐์ฝ์ ์ฑ ์ ๋ฆฌ > ์๋ฐ ๋ง์คํฐ๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ ๋ง์คํฐ๋ถ] 12์ฅ : ๋์์ธํจํด ์ฆ๊ธฐ๊ธฐ - ๊ตฌ์กฐ (0) | 2021.10.02 |
---|---|
[์๋ฐ ๋ง์คํฐ๋ถ] 12์ฅ ๋์์ธํจํด ์ฆ๊ธฐ๊ธฐ - ์์ฑ (0) | 2021.09.22 |
[์๋ฐ ๋ง์คํฐ๋ถ] 10์ฅ ๊ฐ์ฒด์งํฅ ์ฆ๊ธฐ๊ธฐ (0) | 2021.09.15 |
[์๋ฐ ๋ง์คํฐ๋ถ] 6์ฅ ์์ธ ๊ณต๋ตํ๊ธฐ (0) | 2021.09.12 |
[์๋ฐ ๋ง์คํฐ๋ถ] 1์ฅ๋ถํฐ 5์ฅ.. ๋๋ค์๊ณผ Stream API๊น์ง. (0) | 2021.09.12 |