1~3. λ‚ μ§œμ™€ μ‹œκ°„, Calendar 클래슀


λ‚ μ§œμ™€ μ‹œκ°„

  • java.util.Date
    • λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‹€λ£° λͺ©μ μœΌλ‘œ λ§Œλ“€μ–΄μ§„ 클래슀 (JDK1.0)
    • Date의 λ©”μ„œλ“œλŠ” 거의 deprecated λ˜μ—ˆμ§€λ§Œ, μ—¬μ „νžˆ 쓰이고 있음
  • java.util.Calendar
    • Date 클래슀λ₯Ό κ°œμ„ ν•œ μƒˆλ‘œμš΄ 클래슀 (JDK1.1). μ—¬μ „νžˆ 단점이 쑴재
  • java.time νŒ¨ν‚€μ§€
    • Date와 Calendar의 단점을 κ°œμ„ ν•œ μƒˆλ‘œμš΄ ν΄λž˜μŠ€λ“€μ„ 제곡 (JDK1.8)

Calendar 클래슀

  • 좔상 ν΄λž˜μŠ€μ΄λ―€λ‘œ getInstance()λ₯Ό 톡해 κ΅¬ν˜„λœ 객체λ₯Ό μ–»μ–΄μ•Ό 함
Caleldar cal = new Calendar(); // μ—λŸ¬. μΆ”μƒν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€ 생성 λΆˆκ°€
Calendar cal = Calendar.getInstance(); // ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„μœΌλ‘œ μ…‹νŒ…λ¨
int thisYear = cal.get(Calendar.YEAR); // μ˜¬ν•΄κ°€ λͺ‡λ…„인지 μ•Œμ•„λƒ„
int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 λ‹¬μ˜ λ§ˆμ§€λ§‰λ‚ 

4~5. Calendar 클래슀 예제


get() 으둜 λ‚ μ§œμ™€ μ‹œκ°„ ν•„λ“œ κ°€μ Έμ˜€κΈ°

Calendar cal = Calendar.getInstance(); // ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„μœΌλ‘œ μ„ΈνŒ…
int thisYear = cal.get(Calendar.YEAR); // μ˜¬ν•΄κ°€ λͺ‡λ…„인지 μ•Œμ•„λƒ„
int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 λ‹¬μ˜ λ§ˆμ§€λ§‰ λ‚ 

set() 으둜 λ‚ μ§œμ™€ μ‹œκ°„ μ„€μ •ν•˜κΈ°

Calendar date1 = Calendar.getInstance();
date1.set(2017, 7, 15); // 2017λ…„ 8μ›” 15일
Calendar time1 = Calendar.getInstance();
time1.set(Calendar.HOUR_OF_DAY, 10); // time1을 10μ‹œ 20λΆ„ 30초둜 μ„€μ •
time1.set(Calendar.MINUTE, 20);
time1.set(Calendar.SECOND, 30);

clear() 둜 Calendar 객체의 λͺ¨λ“  ν•„λ“œ μ΄ˆκΈ°ν™”

Calendar dt = Calendar.getInstance();
// Thu Aug 29 07:13:03 KST 2017
System.out.println(new Date(dt.getTimeInMillis()));
dt.clear();
// Thu Jan 01 00:00:00 KST 1970
System.out.println(new Date(dt.getTimeInMillis()));
// μƒˆλ‘œμš΄ 객체 λ‹€μ‹œ ν• λ‹Ή
dt = Calendar.getInstance();
// Thu Aug 29 07:13:03 KST 2017
System.out.println(new Date(dt.getTimeInMillis()));
// μ‹œ,λΆ„,초 μ΄ˆκΈ°ν™”
dt.clear(Calendar.SECOND);
dt.clear(Calendar.MINUTE);
dt.clear(Calendar.HOUR_OF_DAY);
dt.clear(Calendar.HOUR);
// Thu Aug 29 00:00:00 KST 2017
System.out.println(new Date(dt.getTimeInMillis()));

add() λŠ” νŠΉμ • ν•„λ“œμ˜ 값을 증가 λ˜λŠ” κ°μ†Œ (λ‹€λ₯Έ ν•„λ“œμ— 영ν–₯ O)

Calendar date = Calendar.getInstance();
date.clear();          // λͺ¨λ“  ν•„λ“œ μ΄ˆκΈ°ν™”
date.set(2020, 7, 31); // 2020λ…„ 8μ›” 31일둜 μ„€μ •
date.add(Calendar.DATE, 1);   // λ‚ μ§œ(DATE)에 1을 더함
date.add(Calendar.MONTH, -8); // μ›”(MONTH)μ—μ„œ 8을 뺌

roll() λŠ” νŠΉμ • ν•„λ“œμ˜ 값을 증가 λ˜λŠ” κ°μ†Œ (λ‹€λ₯Έ ν•„λ“œμ— 영ν–₯ X)

date.set(2020, 7, 31); // 2020λ…„ 8μ›” 31일둜 μ„€μ •
date.roll(Calendar.DATE, 1);   // λ‚ μ§œ(DATE)에 1을 더함
date.roll(Calendar.MONTH, -8); // μ›”(MONTH)μ—μ„œ 8을 뺌

Date 의 λ©”μ„œλ“œλŠ” λŒ€λΆ€λΆ„ deprecated λ˜μ—ˆμ§€λ§Œ μ—¬μ „νžˆ μ‚¬μš©

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

9~12. ν˜•μ‹ν™” 클래슀


  • java.text νŒ¨ν‚€μ§€μ˜ DecimalFormat, SimpleDateFormat
  • μˆ«μžμ™€ λ‚ μ§œλ₯Ό μ›ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ‰½κ²Œ 좜λ ₯ κ°€λŠ₯ (숫자, λ‚ μ§œ β†’ ν˜•μ‹ λ¬Έμžμ—΄)
double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0");
String result = df.format(number); // result = "1.2E6"
  • ν˜•μ‹ λ¬Έμžμ—΄μ—μ„œ μˆ«μžμ™€ λ‚ μ§œλ₯Ό λ½‘μ•„λ‚΄λŠ” κΈ°λŠ₯ (ν˜•μ‹ λ¬Έμžμ—΄ β†’ 숫자, λ‚ μ§œ)
DecimalFormat df = new DecimalFormat("#,###.##");
Number num = df.parse("1,234,567.89");
double d = num.doubleValue(); // 1234567.89

13~16. SimpleDateFormat


  • λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ 좜λ ₯ν•  수 있게 ν•΄μ€Œ
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
// 였늘 λ‚ μ§œλ₯Ό yyyy-MM-dd ν˜•νƒœλ‘œ λ³€ν™˜ ν›„ λ°˜ν™˜
String result = df.format(today);
  • νŠΉμ • ν˜•μ‹μœΌλ‘œ λ˜μ–΄ μžˆλŠ” λ¬Έμžμ—΄μ—μ„œ λ‚ μ§œμ™€ μ‹œκ°„μ„ 뽑아낼 수 있음
DateFormat df  = new SimpleDateFormat("yyyyλ…„ MMμ›” dd일");
DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");
Date d = df.parse("2015λ…„ 11μ›” 23일");
String result = df2.format(d);