๋ ์ง์ ์๊ฐ
โถ java.util.Date
- ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃฐ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง ํด๋์ค (JDK 1.0)
- Date์ ๋ฉ์๋๋ ๊ฑฐ์ deprecated(์ฌ์ฉ์ํจ) ๋์์ง๋ง, ์ฌ์ ํ ์ฐ์ด๊ณ ๋ ์๋ค.
โถ java.util.Calendar
- Dateํด๋์ค๋ฅผ ๊ฐ์ ํ ์๋ก์ด ํด๋์ค(JDK 1.1). ์ฌ์ ํ ๋จ์ ์ด ์กด์ฌ
โถ java.time ํจํค์ง
- Date์ Calendar์ ๋จ์ ์ ๊ฐ์ ํ ์๋ก์ด ํด๋์ค๋ค์ ์ ๊ณต(JDK 1.8)
- Date์ Calendar์ ๋จ์ ์ด์๋ ๋ ์ง์ ์๊ฐ์ ๋ฐ๋ก ๋ค๋ฃฐ ์ ์๋ค. ( LocalDate, LocalTime, LocalDateTime )
Calendarํด๋์ค
Calendarํด๋์ค๋ ์ถ์ ํด๋์ค์ด๋ฏ๋ก getInstance()๋ฅผ ํตํด ๊ตฌํ๋ ๊ฐ์ฒด๋ฅผ ์ป์ด์ผ ํ๋ค.
์ ์ฝ๋์ฒ๋ผ ๋ฐ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ๋๋ค.
Calendar์๋ ์์๋ ฅ, ๋ถ๊ต๋ ฅ, ์ผ๋ณธ๋ ฅ์ด ์๋ค.
๊ทธ๋ ๊ธฐ์ getInstance()๋ฅผ ํ๊ฒ ๋๋ฉด ์ฌ์ฉ์ ์์คํ ์ ๋ ์ง์ ์๊ฐ์ ํ์ ํด ์ฌ์ฉ์์ ๋ง๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ฒ ๋๋ค.
์ฐ๋ฆฌ๋ ์์๋ ฅ(GregorianCalendar)์ ์ฌ์ฉํจ์ผ๋ก getInstance()๋ฅผ ํ๊ฒ๋๋ฉด new GregorianCalendar()๋ฅผ ๋ฐํ๋ฐ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ๋ฐ๋ก new GregorianCalendar()๋ฅผ ์ฌ์ฉ ์ ํ๊ณ , getInstance()๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋
๋ง์ฝ ์ฌ์ฉ์๊ฐ ์์๋ ฅ์ ๋ณด๋ค๊ฐ ๋ถ๊ต๋ ฅ์ ๋ด์ผ ํ๋ ์ํฉ์ด ์ค๋ฉด ์ฝ๋๋ฅผ ๋ฐ๊ฟ์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
get()
get()์ ๋ ์ง์ ์๊ฐ ํ๋๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋์ด๋ค - int get(int field)
์ด๋ ๊ฒ Calendar์ ๊ฐ์ฒด๋ฅผ getInstance()๋ฅผ ํตํด ํ์ฌ ๋ ์ง์ ์๊ฐ์ผ๋ก ์์ฑํ๊ณ ,
cal.get(Calendar.YEAR)์ ์ ์ผ๋ฉด ์ฌํด๊ฐ ๋ช ๋ ์ธ์ง thisYear์ ํ ๋น๋๋ค.
cal.getActualMaximum(Calendar.DATE)๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ฌ์ ๋ง์ง๋ง ๋ ์ด lastDayOfMonth์ ํ ๋น๋๋ค.
์ด๋ ๊ฒ Calendar์ ์ ์๋ ๋ ์ง์ ๊ด๋ จ๋ ํ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
MONTH(์)์ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์ 0์๋ถํฐ ์์ํ๋ค๋ ๊ฒ์ด๋ค. ( 0์ → 1์ , 8์ → 9์ )
Calendar์ ์ ์๋ ์๊ฐ๊ณผ ๊ด๋ จ๋ ํ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด๋ฌํ ํ๋๋ค์ด ์กด์ฌํ๋ค๋๊ฑธ ์ฐธ๊ณ ํ๊ณ , ํ์ํ ๋ ์ฐพ์์ ์ฌ์ฉํ๋๋ก ํ์.
class Ex10_1 {
public static void main(String[] args)
{ // ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ๋ ์ง์ ์๊ฐ์ผ๋ก ์ค์ ๋๋ค.
Calendar today = Calendar.getInstance();
System.out.println("์ด ํด์ ๋
๋ : " + today.get(Calendar.YEAR));
System.out.println("์(0~11, 0:1์): " + today.get(Calendar.MONTH));
System.out.println("์ด ํด์ ๋ช ์งธ ์ฃผ: "
+ today.get(Calendar.WEEK_OF_YEAR));
System.out.println("์ด ๋ฌ์ ๋ช ์งธ ์ฃผ: "
+ today.get(Calendar.WEEK_OF_MONTH));
// DATE์ DAY_OF_MONTH๋ ๊ฐ๋ค.
System.out.println("์ด ๋ฌ์ ๋ช ์ผ: " + today.get(Calendar.DATE));
System.out.println("์ด ๋ฌ์ ๋ช ์ผ: " + today.get(Calendar.DAY_OF_MONTH));
System.out.println("์ด ํด์ ๋ช ์ผ: " + today.get(Calendar.DAY_OF_YEAR));
System.out.println("์์ผ(1~7, 1:์ผ์์ผ): "
+ today.get(Calendar.DAY_OF_WEEK)); // 1:์ผ์์ผ, 2:์์์ผ, ... 7:ํ ์์ผ
System.out.println("์ด ๋ฌ์ ๋ช ์งธ ์์ผ: "
+ today.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("์ค์ _์คํ(0:์ค์ , 1:์คํ): "
+ today.get(Calendar.AM_PM));
System.out.println("์๊ฐ(0~11): " + today.get(Calendar.HOUR));
System.out.println("์๊ฐ(0~23): " + today.get(Calendar.HOUR_OF_DAY));
System.out.println("๋ถ(0~59): " + today.get(Calendar.MINUTE));
System.out.println("์ด(0~59): " + today.get(Calendar.SECOND));
System.out.println("1000๋ถ์ 1์ด(0~999): "
+ today.get(Calendar.MILLISECOND));
// ์ฒ๋ถ์ 1์ด๋ฅผ ์๊ฐ์ผ๋ก ํ์ํ๊ธฐ ์ํด 3600000์ผ๋ก ๋๋์๋ค.(1์๊ฐ = 60 * 60์ด)
System.out.println("TimeZone(-12~+12): "
+ (today.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
System.out.println("์ด ๋ฌ์ ๋ง์ง๋ง ๋ : "
+ today.getActualMaximum(Calendar.DATE) ); // ์ด ๋ฌ์ ๋ง์ง๋ง ์ผ์ ์ฐพ๋๋ค
}
}
์ ์ฝ๋์ ์ถ๋ ฅ๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ด ํด์ ๋ ๋ : 2022
์(0~11, 0:1์): 10
์ด ํด์ ๋ช ์งธ ์ฃผ: 48
์ด ๋ฌ์ ๋ช ์งธ ์ฃผ: 4
์ด ๋ฌ์ ๋ช ์ผ: 25
์ด ๋ฌ์ ๋ช ์ผ: 25
์ด ํด์ ๋ช ์ผ: 329
์์ผ(1~7, 1:์ผ์์ผ): 6
์ด ๋ฌ์ ๋ช ์งธ ์์ผ: 4
์ค์ _์คํ(0:์ค์ , 1:์คํ): 0
์๊ฐ(0~11): 9
์๊ฐ(0~23): 9
๋ถ(0~59): 26
์ด(0~59): 5
1000๋ถ์ 1์ด(0~999): 380
TimeZone(-12~+12): 9
์ด ๋ฌ์ ๋ง์ง๋ง ๋ : 30
set()
get()์ ํตํด์ ๋ ์ง์ ์๊ฐ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ป์ด์๋ค๋ฉด, set() ๋ฉ์๋๋ฅผ ํตํด์ ๋ ์ง์ ์๊ฐ์ ์ง์ ๋ ๊ฐ๋ฅํ๋ค.
set() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ ์์ ๊ฐ๋ค.
set() ๋ฉ์๋์๋ ์ค๋ฒ๋ก๋ฉ๋ ์ฌ๋ฌ๊ฐ์ง set() ๋ฉ์๋๊ฐ ์๋ค.
๋ , ์, ์ผ, ์, ๋ถ, ์ด ๋ฅผ ๋ค์ํ๊ฒ ์ง์ ํ ์๋ ์๋ค.
๋ง์ฝ 2017๋ 8์ 15์ผ์ ์ง์ ํ๋ ค๊ณ ํ๋ค๋ฉด, date1.set(2017, 7, 15);๋ก ์ง์ ํ๋ฉด ๋๋ค.
0์๋ถํฐ ์์์ด๊ธฐ ๋๋ฌธ์ ์์๋ 7์ ์ ์ด์ผ ํ๋ค.
๋ํ date1.set(Calendar.YEAR, 2017) ์ด๋ ๊ฒ ๋ ๋ง ๋ฐ๋ก ์ง์ ํ ์๋ ์๋ค.
ํ์ง๋ง ์ set()์ ์ค๋ฒ๋ก๋ฉ๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์๋ค์ํผ ์, ๋ถ, ์ด๋ง ๋ฐ๋ก ํ ๋ฒ์ ์ง์ ํ ์ ์๋ค.
๊ทธ๋ ๊ธฐ์ ์ ์ฝ๋์ฒ๋ผ ์, ๋ถ, ์ด๋ฅผ ๊ฐ๊ฐ ํ๋์ฉ set()ํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ ๋ค๋ฉด set()์ ํ์ฉํ ์์ ๋ฅผ ์ดํด๋ณด์.
import java.util.*;
class Ex10_2 {
public static void main(String[] args) {
// ์์ผ์ 1๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์, DAY_OF_WEEK[0]์ ๋น์๋์๋ค.
final String[] DAY_OF_WEEK = {"","์ผ","์","ํ","์","๋ชฉ","๊ธ","ํ "};
Calendar date1 = Calendar.getInstance();
Calendar date2 = Calendar.getInstance();
// month์ ๊ฒฝ์ฐ 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ 4์์ธ ๊ฒฝ์ฐ, 3๋ก ์ง์ ํด์ผํ๋ค.
// date1.set(2019, Calendar.APRIL, 29);์ ๊ฐ์ด ํ ์๋ ์๋ค.
date1.set(2019, 3, 29); // 2019๋
4์ 29์ผ๋ก ๋ ์ง๋ฅผ ์ค์ ํ๋ค.
System.out.println("date1์ "+ toString(date1)
+ DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)]+"์์ผ์ด๊ณ ,");
System.out.println("์ค๋(date2)์ " + toString(date2)
+ DAY_OF_WEEK[date2.get(Calendar.DAY_OF_WEEK)]+"์์ผ์
๋๋ค.");
// ๋ ๋ ์ง๊ฐ์ ์ฐจ์ด๋ฅผ ์ป์ผ๋ ค๋ฉด, getTimeInMillis() ์ฒ๋ถ์ ์ผ์ด ๋จ์๋ก ๋ณํํด์ผํ๋ค
long difference =
(date2.getTimeInMillis() - date1.getTimeInMillis())/1000;
System.out.println("๊ทธ ๋ (date1)๋ถํฐ ์ง๊ธ(date2)๊น์ง "
+ difference +"์ด๊ฐ ์ง๋ฌ์ต๋๋ค.");
System.out.println("์ผ(day)๋ก ๊ณ์ฐํ๋ฉด "+ difference/(24*60*60)
+"์ผ์
๋๋ค."); // 1์ผ = 24 * 60 * 60
}
public static String toString(Calendar date) {
return date.get(Calendar.YEAR)+"๋
"+ (date.get(Calendar.MONTH)+1)
+"์ " + date.get(Calendar.DATE) + "์ผ ";
}
}
์ ์ฝ๋์ ์ถ๋ ฅ๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค.
date1์ 2019๋ 4์ 29์ผ ์์์ผ์ด๊ณ ,
์ค๋(date2)์ 2022๋ 11์ 25์ผ ๊ธ์์ผ์ ๋๋ค.
๊ทธ ๋ (date1)๋ถํฐ ์ง๊ธ(date2)๊น์ง 112838400์ด๊ฐ ์ง๋ฌ์ต๋๋ค.
์ผ(day)๋ก ๊ณ์ฐํ๋ฉด 1306์ผ์ ๋๋ค.
์ ์์ ์์๋ date1์๋ ์๊ฐ์ ์ง์ ํ์ฌ ์ค์ ํ์๊ณ , date2์๋ ์ค๋ ๋ ์ง๋ก ์ง์ ์ ํ๋ค.
toString์ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ toString(date1)์ ํ๋ฉด ํด๋น ๋ , ์, ์ผ์ด ๋ฐํ๋๋ค.
๋ํ date1๊ณผ date2์ ๋ ์ง ๊ฐ๊ฒฉ์ ํ์ธํ๊ธฐ ์ํด์ difference๋ณ์๋ฅผ ๋ง๋ค๊ณ ,
getTimeInMillis() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ date1์ ๋ฐ๋ฆฌ์ธ์ปจ๋์์ date2์ ๋ฐ๋ฆฌ์ธ์ปจ๋๋ฅผ ๋บ์ ํ์ฌ
๋์จ ๊ฐ์ 1000์ผ๋ก ๋๋์ด์ฃผ๋ฉด date1๊ณผ date2 ์ฌ์ด์ ๋ ์ง๊ฐ ์ด ๋จ์๋ก difference์ ํ ๋น๋๋ค.
๊ทธ๊ฒ์ ํ๋ฃจ ๋จ์๋ก ๋ณํํ๋ฉด 1์ผ์ ์ด ๋จ์๋ก ๋ณํํ๋ฉด 24 * 60 * 60์ด๋ค.
๊ทธ๋ผ difference์์ (24 * 60 * 60)์ ๋๋์ด์ฃผ๋ฉด date1๊ณผ dat2 ์ฌ์ด๊ฐ ๋ฉฐ์น ์ธ์ง ์ถ๋ ฅ๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ์๊ฐ์ ํ์ฉํ ์์ ๋ ํ์ธํด๋ณด์.
import java.util.*;
class Ex10_3 {
public static void main(String[] args) {
final int[] TIME_UNIT = {3600, 60, 1}; // ํฐ ๋จ์๋ฅผ ์์ ๋๋๋ค.
final String[] TIME_UNIT_NAME = {"์๊ฐ ", "๋ถ ", "์ด "};
Calendar time1 = Calendar.getInstance();
Calendar time2 = Calendar.getInstance();
time1.set(Calendar.HOUR_OF_DAY, 10); // time1์ 10์ 20๋ถ 30์ด๋ก ์ค์
time1.set(Calendar.MINUTE, 20);
time1.set(Calendar.SECOND, 30);
time2.set(Calendar.HOUR_OF_DAY, 20); // time2์ 20์ 30๋ถ 10์ด๋ก ์ค์
time2.set(Calendar.MINUTE, 30);
time2.set(Calendar.SECOND, 10);
System.out.println("time1 :"+time1.get(Calendar.HOUR_OF_DAY)+"์ "
+time1.get(Calendar.MINUTE)+"๋ถ "+time1.get(Calendar.SECOND)+"์ด");
System.out.println("time2 :"+time2.get(Calendar.HOUR_OF_DAY)+"์ "
+time2.get(Calendar.MINUTE)+"๋ถ "+time2.get(Calendar.SECOND)+"์ด");
long difference =
Math.abs(time2.getTimeInMillis() - time1.getTimeInMillis())/1000;
System.out.println("time1๊ณผ time2์ ์ฐจ์ด๋ "+ difference +"์ด ์
๋๋ค.");
String tmp = "";
for(int i=0; i < TIME_UNIT.length;i++) {
tmp += difference/TIME_UNIT[i] + TIME_UNIT_NAME[i];
difference %= TIME_UNIT[i];
}
System.out.println("์๋ถ์ด๋ก ๋ณํํ๋ฉด " + tmp + "์
๋๋ค.");
}
}
์ ์์ ์ ์ถ๋ ฅ๋ฌธ์ ๋ค์๊ณผ ๊ฐ๋ค.
time1 :10์ 20๋ถ 30์ด
time2 :20์ 30๋ถ 10์ด
time1๊ณผ time2์ ์ฐจ์ด๋ 36580์ด ์ ๋๋ค.
์๋ถ์ด๋ก ๋ณํํ๋ฉด 10์๊ฐ 9๋ถ 40์ด ์ ๋๋ค.
์ ์์ ๋ ์๊ฐ(time1)๊ณผ ์๊ฐ(time 2)์ ์๊ฐ๊ณผ ๋ ์๊ฐ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ถ๋ ฅํ๋ ์ฝ๋์ด๋ค.
๋จผ์ 1์๊ฐ, 1๋ถ, 1์ด๋ฅผ ๋ชจ๋ ์ด๋จ์๋ก ํ ๋นํ ๋ฐฐ์ด TIME_UNIT์ ๋ง๋ค์ด์ค๋ค.
์ด๋ ๊ผญ ํฐ ์ซ์๊ฐ ๋จผ์ ์ค๋๋ก ๋ง๋ค์ด์ผ ํ๋ค.
๋ค์์ผ๋ก ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ง๋ค์ด "์๊ฐ" , "๋ถ" , "์ด"๋ฅผ ์ ์ธํ๋ค.
time1๊ฐ์ฒด์ time2๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๊ฐ๊ฐ ์, ๋ถ, ์ด๋ฅผ ์ ์ธํด์ฃผ๊ณ ,
๊ทธ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ํ์ธํ๋ ์ฝ๋์ธ getTimeInMillis()๋ฅผ ์ฌ์ฉํ์ฌ time1๊ณผ time2์ ์ฒ๋ถ์ ์ผ์ด๋ฅผ ๋บ์ ํ์ฌ,
1000์ ๋๋์ด ์ด ๋จ์๋ก ๋ณํํ๋ค.
๊ทธ๋ผ time1๊ณผ time2์ ์ฌ์ด์ ์ด๋ฅผ difference์ ํ ๋น๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด๋ฅผ ์๊ฐ ๋ถ ์ด ๋จ์๋ก ๋ฐ๊พธ๊ธฐ ์ํด ๋ฌธ์์ด ๋ณ์๋ฅผ ํ๋ ์์ฑ์ ํด์ฃผ๊ณ ,
for๋ฌธ์ ์ฌ์ฉํด difference(time1๊ณผ time2 ์ฌ์ด์ ์ด๋จ์) / TIME_UNIT[i] + TIME_UNIT_NAME[i] ๋ฅผ ํ๋ค.
๊ทธ๋ผ for๋ฌธ์ด ๋ฐ๋ณตํ๋ฉด์ ๋ฐฐ์ด์ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ๊ฐ์ ธ์ค๋ฉด์
tmp์๋ ๊ทธ ์ฌ์ด์ ์ด๋จ์์ธ difference๋ฅผ ์๊ฐ, ๋ถ, ์ด ๋จ์๋ก ๋ณํํ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
์ฌ๊ธฐ์ difference %= TIME_UNIT[i]๋ฅผ ์ ์ ์ด์ ๋ difference์์ ์๊ฐ ๋จ์๊ฐ ๋น ์ง๊ณ ๋จ์ ์๋ฅผ
๋ค์ difference์ ํ ๋นํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
clear()
clear()๋ Calendar๊ฐ์ฒด์ ๋ชจ๋ ํ๋๋ฅผ ์ด๊ธฐํํ๋ ๋ฉ์๋์ด๋ค.
์ฒ์์ Calendar๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ํ์ฌ ๋ ์ง์ ์๊ฐ์ผ๋ก ๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ์ฒด๋ฅผ clear()ํ๊ฒ ๋๋ฉด 1970๋ 1์ 1์ผ 00:00:00์ผ๋ก ์ด๊ธฐํ๋๋ค.
๋ํ clear(int field)๋ฅผ ํตํด์ Calendar๊ฐ์ฒด์ ํน์ ํ๋๋ง ์ด๊ธฐํํ ์๋ ์๋ค.
Calendar ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ํ์ฌ ์๊ฐ์ผ๋ก ํด์ผ ํ๋ ๊ฒ์ด ์๋๋ผ๋ฉด clear()์ ๊ผญ ํด์ค์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ set()์ ํด์ผ์ง ๊ณ์ฐ์ด ์ ํํด์ง๋ค.
๊ทธ ์ด์ ๋ก๋ ์๋ฐ์์ ์ปดํ์ผํ๋ฉด์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ ์๊ฐ ์ฐจ์ด๊ฐ 0.000...n์ด๊ฐ ๋ฐ์ํ๊ฒ ๋๋๋ฐ
๊ทธ๋ฌํ ๋ฏธ์ธํ ์ด ์ฐจ์ด ๋๋ฌธ์ 1์ผ์ด ๋ชจ์๋ผ๊ฑฐ๋ ์ ํํ์ง ์์ ์ฐจ์ด๊ฐ ๋๋ ์ํฉ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ด๋ค.
add(), roll()
add()๋ ํน์ ํ๋์ ๊ฐ์ ์ฆ๊ฐ ๋๋ ๊ฐ์ํ๋ ๋ฉ์๋์ด๋ค. ( ๋ค๋ฅธ ํ๋์ ์ํฅ์ด ์๋ค )
์ ์ฝ๋์ฒ๋ผ ์์๋ก ๋ํ๊ธฐ ๋ฟ๋ง ์๋๋ผ ์์๋ก ๋นผ๊ธฐ๋ ๊ฐ๋ฅํ๋ค.
์ผ(DATE)์ 1์ ๋ํด์ 9์ 1์ผ์ด ๋๊ณ , 8๋ฌ์ ๋นผ์ 1์ 1์ผ์ด ๋๋ค.
roll()์ ํน์ ํ๋์ ๊ฐ์ ์ฆ๊ฐ ๋๋ ๊ฐ์ํ๋ ๋ฉ์๋์ด๋ค. ( ๋ค๋ฅธ ํ๋์ ์ํฅ์ด ์๋ค )
roll()์ ๊ธฐ๋ฅ ์์ฒด๋ add()์ ๋์ผํ์ง๋ง, roll()์ ๋ค๋ฅธ ํ๋์ ์ํฅ์ ๋ผ์น์ง ์๋๋ค.
์ฆ, 1์ผ์ ๋ํ๋ฉด 7์ 1์ผ์ด ๋๊ณ , 7์ 1์ผ์์ 8๋ฌ์ ๋นผ๋ฉด 2020๋ 12์ 1์ผ์ด ๋๋ ๊ฒ์ด๋ค.
import java.util.*;
class Ex10_4 {
public static void main(String[] args) {
Calendar date = Calendar.getInstance();
date.set(2019, 7, 31); // 2019๋
8์ 31์ผ
System.out.println(toString(date));
System.out.println("= 1์ผ ํ =");
date.add(Calendar.DATE, 1);
System.out.println(toString(date));
System.out.println("= 6๋ฌ ์ =");
date.add(Calendar.MONTH, -6);
System.out.println(toString(date));
System.out.println("= 31์ผ ํ(roll) =");
date.roll(Calendar.DATE, 31);
System.out.println(toString(date));
System.out.println("= 31์ผ ํ(add) =");
date.add(Calendar.DATE, 31);
System.out.println(toString(date));
}
public static String toString(Calendar date) {
return date.get(Calendar.YEAR)+"๋
"+ (date.get(Calendar.MONTH)+1)
+"์ " + date.get(Calendar.DATE) + "์ผ";
}
}
์ ์ฝ๋๋ ์ฒ์ ๋ ์ง๋ฅผ ์ง์ ํ๊ณ add()์ roll()์ ์ฌ์ฉํด ๋ ์ง๋ฅผ ๋ฐ๊พธ๋ ์ฝ๋์ด๋ค.
์ ์ผ ์ฒ์์ 2019๋ 8์ 31์ผ๋ก ์ง์ ์ ํ๊ณ add()๋ก 1์ผ์ ๋ํ๋ฉด 2019๋ 9์ 1์ผ์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ , add()๋ฅผ ํตํด 6๋ฌ์ ๋นผ๋ฉด 2019๋ 3์ 1์ผ์ด ๋๊ณ ,
roll()๋ฅผ ์ฌ์ฉํด 31์ผ์ ๋ํ๋ฉด ๋๊ฐ์ด 2019๋ 3์ 1์ผ์ด ๋๋ค. ( roll()์ ๋ค๋ฅธ ํ๋์ ์ํฅ์ ์ฃผ์ง ์๋๋ค. )
๊ทธ๋ฆฌ๊ณ ๋ค์ add()๋ก 31์ผ์ ๋ํ๋ฉด 2019๋ 4์ 1์ผ์ด ๋๋ค. ( add()๋ ๋ค๋ฅธ ํ๋์ ์ํฅ์ ์ค๋ค. )
Date์ Calendar๊ฐ์ ๋ณํ
Date์ ๋ฉ์๋๋ ๋๋ถ๋ถ deprecated ๋์์ง๋ง ์ฌ์ ํ ์ฌ์ฉ ์ค์ด๋ค.