Back-End/Java

์ž๋ฐ”์˜ ์ •์„ 10์žฅ : ๋‚ ์งœ์™€ ์‹œ๊ฐ„ & ํ˜•์‹ํ™”

์ฑ”๐Ÿป 2024. 1. 23. 18:38
๐Ÿ”Ÿ

[ ์ถœ์ฒ˜ ]
์ž๋ฐ”์˜ ์ •์„:
https://product.kyobobook.co.kr/detail/S000001550352
์ž๋ฐ”์˜ ์ •์„ ์œ ํŠœ๋ธŒ:
https://www.youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp

10-1 ๋‚ ์งœ์™€ ์‹œ๊ฐ„

java.util.Date

  • ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋‹ค๋ฃฐ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค(JDK1.0). - 1995๋…„๋ง
  • Date์˜ ๋ฉ”์„œ๋“œ๋Š” ๊ฑฐ์˜ deprecated๋˜์—ˆ์ง€๋งŒ, ์—ฌ์ „ํžˆ ์“ฐ์ด๊ณ  ์žˆ๋‹ค.

java.util.Calendar

  • Date ํด๋ž˜์Šค๋ฅผ ๊ฐœ์„ ํ•œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค(JDK1.1). ์—ฌ์ „ํžˆ ๋‹จ์ ์ด ์กด์žฌ - 1997๋…„

java.time ํŒจํ‚ค์ง€

  • Date์™€ Calendar์˜ ๋‹จ์ ์„ ๊ฐœ์„ ํ•œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋“ค์„ ์ œ๊ณต(JDK1.8) - 2017๋…„

Date์™€ Calendar์˜ ๋‹จ์ ์€ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๊ฐ™์ด ๋‹ค๋ฃฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

timeํŒจํ‚ค์ง€์—์„œ๋Š” ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋”ฐ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ LocalDate์™€ LocalTime, ํ•ฉ์ณ์„œ ๋‹ค๋ฃฐ ๋•Œ๋Š” LocalDateTime์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋‚˜๋ˆ ๋‘์—ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

10-2 Calendar ํด๋ž˜์Šค

  • ์ถ”์ƒ ํด๋ž˜์Šค์ด๋ฏ€๋กœ getInstance()๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋œ ๊ฐ์ฒด๋ฅผ ์–ป์–ด์•ผ ํ•œ๋‹ค.
Calendar cal = new Calendar(); // ์—๋Ÿฌ!!! ์ถ”์ƒํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค.

// OK, getInstance() ๋ฉ”์„œ๋“œ๋Š” Calendar ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
Calendar cal = Calendar.getInstance();

class MyApplication {
	public static void main(String args[]) {
		// ๋‹ฌ๋ ฅ์˜ ์ข…๋ฅ˜๋Š” ์„œ์–‘๋ ฅ, ๋ถˆ๊ต๋ ฅ, ์ผ๋ณธ๋ ฅ ๋“ฑ ๋งŽ์€ ์—ญ๋ฒ•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šค๋ฅผ ์ง์ ‘์ƒ์„ฑํ•ด ์–ป์œผ๋ฉด
		Calendar cal = new GregorianCalendar(); // ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ด ๋ถ€๋ถ„์„ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค
	}
}

10-3 Calendar ํด๋ž˜์Šค - ์˜ˆ์ œ1

Calendar cal = Calendar.getInstance(); // ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์œผ๋กœ ์…‹ํŒ…๋จ
int thisYear = cal.get(Calendar.YEAR); // ์˜ฌํ•ด๊ฐ€ ๋ช‡๋…„์ธ์ง€ ์•Œ์•„๋‚ธ๋‹ค.
int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // ์ด ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰๋‚ 

get() : ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ํ•„๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ - int get(int field)

Calendard์— ์ •์˜๋œ ํ•„๋“œ

ํ•„๋“œ๋ช…์„ค๋ช…
YEAR๋…„
MONTH์›”(0๋ถ€ํ„ฐ ์‹œ์ž‘)
WEEK_OF_YEAR๊ทธ ํ•ด์˜ ๋ช‡ ๋ฒˆ์งธ ์ฃผ
WEEK_OF_MONTH๊ทธ ๋‹ฌ์˜ ๋ช‡ ๋ฒˆ์งธ ์ฃผ(์ผ~ํ† )
DATE์ผ
DAY_OF_MONTH๊ทธ ๋‹ฌ์˜ ๋ช‡๋ฒˆ์งธ ์ผ
DAY_OF_YEAR๊ทธ ํ•ด์˜ ๋ช‡ ๋ฒˆ์งธ์ผ
DAY_OF_WEEK์š”์ผ(1~7) 1: ์ผ์š”์ผ
DAY_OF_WEEK_IN_MONTH๊ทธ ๋‹ฌ์˜ ๋ช‡ ๋ฒˆ์งธ ์š”์ผ
HOUR์‹œ๊ฐ„(0~11)
HOUR_OF_DAY์‹œ๊ฐ„(0~23)
MINUTE๋ถ„
SECOND์ดˆ
MILLISECOND์ฒœ๋ถ„์˜ ์ผ์ดˆ
ZONE_OFFSETGMT ๊ธฐ์ค€ ์‹œ์ฐจ(์ฒœ๋ถ„์˜ ์ผ์ดˆ ๋‹จ์œ„)
AM_PM์˜ค์ „/์˜คํ›„

10-4,5 Calendar ํด๋ž˜์Šค - ์˜ˆ์ œ2, 3

set() : ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ง€์ •ํ•˜๊ธฐ

void set(int field, int value)
void set(int field, int month, int date)
void set(int year, int month, int date, int hourOfDay, int minute)
void set(int year, int month, int date, int hourOfDay, int minute, int second)
  • ๋‚ ์งœ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•. ์›”(MONTH)์ด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์ ์— ์ฃผ์˜
    Calendar date1 = Calendar.getInstance();
    date1.set(2022, 6, 31); // 2022๋…„ 7์›” 31์ผ(6์›” ์•„๋‹˜)
    // date1.set(Calendar.YEAR, 2002);
    // date1.set(Calendar.MONTH, 0); 
    // date1.set(Calendar.DATE, 15);

    +) ๋ฐฐ์—ด์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. {โ€JANโ€, โ€œFEBโ€,โ€ฆ}

  • ์‹œ๊ฐ„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
    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);

  • ์˜ˆ์ œ 10-2
    // ์˜ˆ์ œ 10-2
    import java.util.Calendar;
    
    public class Main {
    	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(2022, Calendar.JANUARY, 15); ์™€ ๊ฐ™์ด ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
            date1.set(2002, 0, 15); // 2022๋…„ 1์›” 15์ผ๋กœ ๋‚ ์งœ๋ฅผ ์„ค์ •ํ•œ๋‹ค.
            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) + "์ผ์ž…๋‹ˆ๋‹ค.");
            System.out.println((difference/(24 * 60 * 60))/365.0);
    	}
    
        public static String toString(Calendar date) {
    		return date.get(Calendar.YEAR)+"๋…„ "+ (date.get(Calendar.MONTH)+1) 
                                +"์›” " + date.get(Calendar.DATE) + "์ผ ";
    	}
    
    }
  • ์˜ˆ์ œ 10-3
    import java.util.Calendar;
    import java.util.concurrent.TimeUnit;
    
    public class Main {
    	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.DATE) + "์ดˆ");
    
            System.out.println("time2 : " + time2.get(Calendar.HOUR_OF_DAY) + "์‹œ "
                                          + time2.get(Calendar.MINUTE) + "๋ถ„ "
                                          + time2.get(Calendar.DATE) + "์ดˆ");
    
            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 + "์ž…๋‹ˆ๋‹ค.");
    
            // System.out.println("์‹œ๋ถ„์ดˆ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด " + (difference / 3600) + "์‹œ๊ฐ„ "
            //                                           + (difference % 3600 / 60) + "๋ถ„ "
            //                                           + (difference % 3600 % 60) + "์ดˆ ");
    	}
    
        public static String toString(Calendar date) {
    		return date.get(Calendar.YEAR)+"๋…„ "+ (date.get(Calendar.MONTH)+1) 
                                +"์›” " + date.get(Calendar.DATE) + "์ผ ";
    	}
    
    }

clear() : Calendar ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ•„๋“œ ์ดˆ๊ธฐํ™”

Calendar dt = Calendar.getInstance();
// Sun Jul 31 11:40:01 KST 2022
System.out.println(new Date(dt.getTimeInMillis())); 

dt.clear();
// Thu Jan 01 00:00:00 KST 1970 : ์ปดํ“จํ„ฐ๊ฐ€ ๋‚˜์˜จ ์‹œ์ ์ฏค์„ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์Œ(EPHCH TIME)
System.out.println(new Date(dt.getTimeInMillis()));

clear(int filed) : Calendar ๊ฐ์ฒด์˜ ํŠน์ • ํ•„๋“œ ์ดˆ๊ธฐํ™”

Calendar dt = Calendar.getInstance();

// Sun Jul 31 11:46:41 KST 2022
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);        // ์‹œ๊ฐ„์„ ์ดˆ๊ธฐํ™”
// Sun Jul 31 00:00:00 KST 2022
System.out.println(new Date(dt.getTimeInMillis()));
  • +) Calendar ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„์—๋Š” ๊ผญ clear()๋ฅผ ํ•ด์ค˜์•ผํ•œ๋‹ค.
    import java.util.Calendar;
    
    public class Main {
        static int getDayDiff(String yyyymmdd1, String yyyymmdd2) {
            int diff = 0;
            
            int year1 = Integer.parseInt(yyyymmdd1.substring(0, 4));
            int month1 = Integer.parseInt(yyyymmdd1.substring(4, 6)) - 1;
            int day1 = Integer.parseInt(yyyymmdd1.substring(6, 8));
            
            int year2 = Integer.parseInt(yyyymmdd2.substring(0, 4));
            int month2 = Integer.parseInt(yyyymmdd2.substring(4, 6)) - 1;
            int day2 = Integer.parseInt(yyyymmdd2.substring(6, 8));
    
            Calendar date1 = Calendar.getInstance();
            Calendar date2 = Calendar.getInstance();
            
            System.out.println("date1 = " + date1);
            System.out.println();
            System.out.println("date2 = " + date2);
            System.out.println();
    
            date1.clear();
            date2.clear();
    
            System.out.println("date1 = " + date1);
            System.out.println();
            System.out.println("date2 = " + date2);
    
            date1.set(year1, month1, day1);
            date2.set(year2, month2, day2);
    
            System.out.println((date1.getTimeInMillis() - date2.getTimeInMillis()) / (24f * 60f * 60f * 1000f));
            diff = (int) ((date1.getTimeInMillis() - date2.getTimeInMillis()) / (24 * 60 * 60 * 1000));
    
            return diff;
        }
    
    	public static void main(String[] args) {
            System.out.println(getDayDiff("20010103", "20010101")); // 2
    	}
    }

    clear()๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์„ ๊ฒฝ์šฐ date1๊ณผ date2์˜ ms์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— 2๋‚˜ ๋‚˜์˜ค์ง€ ์•Š๊ณ  1์ด ๋‚˜์˜ค๊ฒŒ๋จ

    clear()๋ฅผ ํ•ด์ฃผ๋ฉด ms์ฐจ์ด๊ฐ€ ๋˜‘๊ฐ™์•„์ง€๊ธฐ ๋•Œ๋ฌธ

10-6,7 Calendar ํด๋ž˜์Šค - ์˜ˆ์ œ4, 5

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.add(Calendar.DATE, 1);   // -> 2020๋…„ 9์›” 1์ผ / ๋‚ ์งœ(DATE)์— 1์„ ๋”ํ•œ๋‹ค.
date.add(Calendar.MONTH, -8); // -> 2020๋…„ 12์›” 31์ผ / ์›”(MONTH)์—์„œ 8์„ ๋บ€๋‹ค.

+) ์ผ ํ•„๋“œ๊ฐ€ ๋ง์ผ์ผ ๋•Œ roll ๋ฉ”์„œ๋“œ๋กœ ์›” ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์ผ ํ•„๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

ex) 2023๋…„ 1์›” 31์ผ roll()์„ ํ˜ธ์ถœํ•ด์„œ ์›” ํ•„๋“œ๋ฅผ 1์ฆ๊ฐ€์‹œ์ผฐ์„ ๋•Œ 2023๋…„ 2์›” 28์ผ์ด๋œ๋‹ค.

  • ์˜ˆ์ œ 10-4
    // ์˜ˆ์ œ 10-4
    import java.util.Calendar;
    
    public class Main {
        public static void main(String[] args) {
            Calendar date = Calendar.getInstance();
            date.set(2019, 7, 31); // 2019 8 31
    
            System.out.println("== 1์ผ ํ›„ ==");
            date.add(Calendar.DATE, 1); // 2019 9 1
            System.out.println(toString(date));
    
            System.out.println("== 6๋‹ฌ ์ „ ==");
            date.add(Calendar.MONTH, -6); // 2019 3 1
            System.out.println(toString(date));
    
            System.out.println("== 31์ผ ํ›„(roll) ==");
            date.roll(Calendar.DATE, 31); // 2019 3 1
            System.out.println(toString(date));
    
            System.out.println("== 31์ผ ํ›„(add) ==");
            date.add(Calendar.DATE, 31); // 2019 4 1
            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)) + "์ผ";
        }
    }

โœ…ย Check Point

์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ๋‹ฌ์—์„œ ํ•˜๋ฃจ๋ฅผ ๋นผ๋ฉด๋œ๋‹ค.

ex) day.add(Calendar.DATE, -1)

  • ์˜ˆ์ œ 10-6 : ๋…„๊ณผ ์›” ์ž…๋ ฅ ์‹œ ๋‹ฌ๋ ฅ์„ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ
    // ์˜ˆ์ œ 10-5
    import java.util.Calendar;
    
    public class Main {
        public static void main(String[] args) {
            int year = 2022;
            int month = 7;
            int START_DAY_OF_WEEK = 0; // 1์ผ์˜ ์š”์ผ
            int END_DAY = 0; // ๋งˆ์ง€๋ง‰ ๋‚ 
    
            Calendar sDay = Calendar.getInstance(); // ์‹œ์ž‘์ผ
            Calendar eDay = Calendar.getInstance(); // ๋์ผ
    
            // ์›”์˜ ๊ฒฝ์šฐ 0๋ถ€ํ„ฐ 11๊นŒ์ง€์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฏ€๋กœ 1์„ ๋นผ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
            // ์˜ˆ๋ฅผ ๋“ค์–ด, 2022 6์›” 1์ผ์€ sDay.set(2022, 5, 1);๊ณผ ๊ฐ™์ด ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
            sDay.set(year, month-1, 1); // 2022.07.01
            eDay.set(year, month, 1); // 2022.08.01
    
            // ๋‹ค์Œ ๋‹ฌ์˜ ์ฒซ๋‚ (8์›” 1์ผ)์—์„œ ํ•˜๋ฃจ๋ฅผ ๋นผ๋ฉด ํ˜„์žฌ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ (7์›” 31์ผ)์ด ๋œ๋‹ค.
            eDay.add(Calendar.DATE, -1); // 2022.07.31.
    
            // ์ฒซ ๋ฒˆ์งธ ์š”์ผ์ด ๋ฌด์Šจ ์š”์ผ์ธ์ง€ ์•Œ์•„๋‚ธ๋‹ค.
            START_DAY_OF_WEEK = sDay.get(Calendar.DAY_OF_WEEK);
    
            // eDay์— ์ง€์ •๋œ ๋‚ ์งœ๋ฅผ ์–ป์–ด์˜จ๋‹ค.
            END_DAY = eDay.get(Calendar.DATE);
    
            System.out.println("      " + year + "๋…„" + month + "์›”");
            System.out.println(" SU MO TH WE TH FR SA");
    
            // START_DAY_OF_WEEK = 6(๊ธˆ์š”์ผ)
            // ํ•ด๋‹น ์›”์˜ 1์ผ์ด ์–ด๋А ์š”์ผ์ธ์ง€์— ๋”ฐ๋ผ ์„œ ๊ณต๋ฐฑ์„ ์ถœ๋ ฅํ•œ๋‹ค.
            // ๋งŒ์ผ 1์ผ์ด ์ˆ˜์š”์ผ์ด๋ผ๋ฉด ๊ณต๋ฐฑ์„ ์„ธ ๋ฒˆ ์ฐ๋Š”๋‹ค. (์ผ์š”์ผ๋ถ€ํ„ฐ ์‹œ์ž‘)
            for(int i = 1; i < START_DAY_OF_WEEK; i++) {
                System.out.print("   ");
            }
    
            // i๋Š” ๋‚ ์งœ๋ฅผ ์ฐ๋Š” ๋ณ€์ˆ˜
            // n์€ ํ† ์š”์ผ๋งˆ๋‹ค ์ค„๋ฐ”๊ฟˆ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜
            for(int i = 1, n = START_DAY_OF_WEEK; i <= END_DAY; i++, n++) {
                System.out.print((i < 10) ? "  " + i : " " + i);
                if(n % 7 == 0) System.out.println();
            }
        }
    }
    
    // 1. ๋ง์ผ ๊ตฌํ•˜๊ธฐ (๋‹ค์Œ๋‹ฌ 1์ผ์—์„œ -1)
    // 2. 1์ผ์˜ ์š”์ผ ๊ตฌํ•˜๊ธฐ
  • ์˜ˆ์ œ 10-7 : 6๋ฒˆ์˜ ๋‹ฌ๋ ฅ ์˜ˆ์ œ์—์„œ ์ฒซ ์ฃผ์™€ ๋งˆ์ง€๋ง‰ ์ฃผ๊ฐ€ ์ด์ „ ๋‹ฌ, ์ดํ›„ ๋‹ฌ๊ณผ ์—ฐ๊ฒฐ๋˜๋„๋ก ๋ณ€๊ฒฝํ•œ ๊ฒƒ
    package ch10;
    
    import java.util.*;
    
    class CalendarEx7 {
        public static void main(String[] args) {
    //        if(args.length !=2) {
    //            System.out.println("Usage : java CalendarEx7 2015 11");
    //            return;
    //        }
    
    //        int year  = Integer.parseInt(args[0]);
    //        int month = Integer.parseInt(args[1]);
            int year  = 2023;
            int month = 01;
    
            Calendar sDay = Calendar.getInstance();       // ์‹œ์ž‘์ผ
            Calendar eDay = Calendar.getInstance();       // ๋์ผ
    
            // ์›”์˜ ๊ฒฝ์šฐ 0 ๋ถ€ํ„ฐ 11๊นŒ์ง€์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฏ€๋กœ 1์„ ๋นผ์ค˜์•ผํ•œ๋‹ค.
            // ์˜ˆ๋ฅผ ๋“ค์–ด, 2004๋…„ 11์›” 1์ผ์€ sDay.set(2004, 10, 1);๊ณผ ๊ฐ™์ด ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
            sDay.set(year, month-1, 1);     // ์ž…๋ ฅ์›”์˜ 1์ผ๋กœ ์„ค์ •ํ•œ๋‹ค.
            // ์ž…๋ ฅ์›”์˜ ๋ง์ผ๋กœ ์„ค์ •ํ•œ๋‹ค.
            eDay.set(year, month-1,  sDay.getActualMaximum(Calendar.DATE));
            // 1์ผ์ด ์†ํ•œ ์ฃผ์˜ ์ผ์š”์ผ๋กœ ๋‚ ์งœ์„ค์ •.
            sDay.add(Calendar.DATE, -sDay.get(Calendar.DAY_OF_WEEK) + 1);
            // ๋ง์ผ์ด ์†ํ•œ ์ฃผ์˜ ํ† ์š”์ผ๋กœ ๋‚ ์งœ์„ค์ •
            eDay.add(Calendar.DATE, 7 - eDay.get(Calendar.DAY_OF_WEEK));
    
            System.out.println("      " + year +"๋…„ " + month +"์›”");
            System.out.println(" SU MO TU WE TH FR SA");
    
            //์‹œ์ž‘ ์ผ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ผ๊นŒ์ง€(sDay <= eDay) 1์ผ์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ์ผ(Calendar.DATE)์„ ์ถœ๋ ฅ
            for(int n=1; sDay.before(eDay) || sDay.equals(eDay); sDay.add(Calendar.DATE, 1)) {
                int day = sDay.get(Calendar.DATE);
                System.out.print((day < 10)? "  "+day : " "+day );
    
                if(n++%7==0) System.out.println();	// 7์ผ์น˜๋ฅผ ์ฐ๊ณ  ๋‚˜์„œ ์ค„์„ ๋ฐ”๊พผ๋‹ค.
            }
        } // main
    }

10-8 Date์™€ Calendar๊ฐ„์˜ ๋ณ€ํ™˜

  • Date์˜ ๋ฉ”์„œ๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ deprecated ๋˜์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ

    deprecated : ์‚ฌ์šฉ์‚ฌ์ง€ ์•Š์„ ๊ฒƒ์„ ๊ถŒ์žฅ

Calendar โ†’ Date

Calendar cal = Calendar.getInstance();
  ...
Date d = new Date(cal.getTimeInMillis()); // Date(long date)

Date โ†’ Calendar

Date d = new Date();
  ...
Calendar cal = Calendar.getInstance();
cal.setTime(d);

10-9 ํ˜•์‹ํ™” ํด๋ž˜์Šค

  • java.text ํŒจํ‚ค์ง€์˜ DecimalFormat(์ˆซ์ž), SimpleDateFormat(๋‚ ์งœ)
  • ์ˆซ์ž์™€ ๋‚ ์งœ๋ฅผ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์‰ฝ๊ฒŒ ์ถœ๋ ฅ ๊ฐ€๋Šฅ(์ˆซ์ž, ๋‚ ์งœ โ†’ ํ˜•์‹ ๋ฌธ์ž์—ด)
    double number = 1234567.89;
    DecimalFormat df = new DecimalFormat("#.#E0");
    String result = df.format(number); // result = "1.2E6" (์ง€์ˆ˜ํ‘œํ˜„)
  • ํ˜•์‹ ๋ฌธ์ž์—ด์—์„œ ์ˆซ์ž์™€ ๋‚ ์งœ๋ฅผ ๋ฝ‘์•„๋‚ด๋Š” ๊ธฐ๋Šฅ(ํ˜•์‹ ๋ฌธ์ž์—ด โ†’ ์ˆซ์ž, ๋‚ ์งœ)
    DecimalFormat df2 = new DecimalFormat("#,###.##");
    Number num = df2.parse("1,234,567.89");
    double d = num.doubleValue();

10-10 DecimalFormat

format() : ์ˆซ์ž๋ฅผ ํ˜•์‹ํ™”ํ•  ๋•Œ ์‚ฌ์šฉ(์ˆซ์ž โ†’ ํ˜•์‹ ๋ฌธ์ž์—ด)

double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0"); // ์ง€์ˆ˜ํ˜•์‹
String result = df.format(number); // result = "1.2E6"

parse() : ํŠน์ • ํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ๋„ ์‚ฌ์šฉ(ํ˜•์‹ ๋ฌธ์ž์—ด โ†’ ์ˆซ์ž)

DecimalFormat df = new DecimalFormat("#,###.##");
Number num = df.parse("1,234,567.89");
double d = num.doubleValue(); // 1234567.89

[์ฐธ๊ณ ] Integer.parseInt()๋Š” ์ฝค๋งˆ(,)๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ ๋ชปํ•จ

๊ธฐํ˜ธ์˜๋ฏธํŒจํ„ด๊ฒฐ๊ณผ(1234567.89)
010์ง„์ˆ˜(๊ฐ’์ด ์—†์„ ๋•Œ๋Š” 0)0
0.0
0000000000.0000
1234568
1234567.9
0001234567.8900
#10์ง„์ˆ˜#
#.#
##########.####
1234568
1234567.9
1234567.89
E์ง€์ˆ˜๊ธฐํ˜ธ#.#E0
0.0E0
0.000000000E0
00.00000000E0
#.########E0
##.#######E0
1.2E6
1.2E6
1.234567890E6
12.34567890E5
1.23456789E6
1.23456789E6
  • ์˜ˆ์ œ 10-10
    package ch10;
    
    import java.text.*;
    
    class DecimalFormatEx1 {
        public static void main(String[] args) throws Exception {
            double number  = 1234567.89;
    
            String[] pattern = {
                    "0",
                    "#",
                    "0.0",
                    "#.#",
                    "0000000000.0000",
                    "##########.####",
                    "#.#-",
                    "-#.#",
                    "#,###.##",
                    "#,####.##",
                    "#E0",
                    "0E0",
                    "##E0",
                    "00E0",
                    "####E0",
                    "0000E0",
                    "#.#E0",
                    "0.0E0",
                    "0.000000000E0",
                    "00.00000000E0",
                    "000.0000000E0",
                    "#.#########E0",
                    "##.########E0",
                    "###.#######E0",
                    "#,###.##+;#,###.##-",
                    "#.#%",
                    "#.#\u2030",
                    "\u00A4 #,###",
                    "'#'#,###",
                    "''#,###",
            };
    
            for(int i=0; i < pattern.length; i++) {
                DecimalFormat df = new DecimalFormat(pattern[i]);
                System.out.printf("%19s : %s\n",pattern[i], df.format(number));
            }
        } // main
    }

10-13~16 SimpleDateFormat

format() : ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ

Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

// ์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ yyyy-MM-dd ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
String result = df.format(today);

๋‚ ์งœ์™€ ๊ด€๋ จ๋œ ๊ธฐํ˜ธ๋“ค

๊ธฐํ˜ธ์˜๋ฏธ๋ณด๊ธฐ
G์—ฐ๋Œ€(BC, AD)AD
y๋…„๋„2006
M์›”(1~12 ๋˜๋Š” 1์›”~12์›”)10๋˜๋Š” 10์›”, OCT
w๋…„์˜ ๋ฉด ๋ฒˆ์งธ ์ฃผ(1~53)50
W์›”์˜ ๋ช‡ ๋ฒˆ์งธ ์ฃผ(1~5)4
D๋…„์˜ ๋ช‡ ๋ฒˆ์งธ ์ผ(1~366)100
d์›”์˜ ๋ช‡ ๋ฒˆ์งธ ์ผ(1~31)15
F์›”์˜ ๋ช‡ ๋ฒˆ์งธ ์š”์ผ(1~5)1
E์š”์ผ์›”

parse() : ํŠน์ • ํ˜•์‹์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๋ฌธ์ž์—ด์—์„œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋ฝ‘์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

DateFormat df = new SimpleDateFormat("yyyy๋…„ MM์›” dd์ผ");
DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");

Date d = df.parse("2015๋…„ 11์›” 23์ผ"); // ๋ฌธ์ž์—ด์„ Date๋กœ ๋ณ€ํ™˜
String result = df2.format(d);
  • ์˜ˆ์ œ 10-8
    import java.util.*;
    import java.text.*;
    
    class Ex10_8 {
    	public static void main(String[] args) {
    		Date today = new Date();
    
    		SimpleDateFormat sdf1, sdf2, sdf3, sdf4;
    		SimpleDateFormat sdf5, sdf6, sdf7, sdf8, sdf9;
    
    		sdf1 = new SimpleDateFormat("yyyy-MM-dd");
    		sdf2 = new SimpleDateFormat("''yy๋…„ MMM dd์ผ E์š”์ผ");
    		sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    		sdf4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
    
    		sdf5 = new SimpleDateFormat("์˜ค๋Š˜์€ ์˜ฌ ํ•ด์˜ D๋ฒˆ์งธ ๋‚ ์ž…๋‹ˆ๋‹ค.");
    		sdf6 = new SimpleDateFormat("์˜ค๋Š˜์€ ์ด ๋‹ฌ์˜ d๋ฒˆ์งธ ๋‚ ์ž…๋‹ˆ๋‹ค.");
    		sdf7 = new SimpleDateFormat("์˜ค๋Š˜์€ ์˜ฌ ํ•ด์˜ w๋ฒˆ์งธ ์ฃผ์ž…๋‹ˆ๋‹ค.");
    		sdf8 = new SimpleDateFormat("์˜ค๋Š˜์€ ์ด ๋‹ฌ์˜ W๋ฒˆ์งธ ์ฃผ์ž…๋‹ˆ๋‹ค.");
    		sdf9 = new SimpleDateFormat("์˜ค๋Š˜์€ ์ด ๋‹ฌ์˜ F๋ฒˆ์งธ E์š”์ผ์ž…๋‹ˆ๋‹ค.");
    
    		System.out.println(sdf1.format(today));	// format(Date d)
    		System.out.println(sdf2.format(today));
    		System.out.println(sdf3.format(today));
    		System.out.println(sdf4.format(today));
    		System.out.println();
    		System.out.println(sdf5.format(today));
    		System.out.println(sdf6.format(today));
    		System.out.println(sdf7.format(today));
    		System.out.println(sdf8.format(today));
    		System.out.println(sdf9.format(today));
    	}
    }
  • ์˜ˆ์ œ 10-9
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Main {
    	public static void main(String[] args) throws ParseException {
            DateFormat df = new SimpleDateFormat("yyyy๋…„ MM์›” dd์ผ");
            DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");
    
            Date d = df.parse("2019๋…„ 12์›” 23์ผ");
            System.out.println(df2.format(d));
    	}
    }

์‹œ๊ฐ„๊ณผ ๊ด€๋ จ๋œ ๊ธฐํ˜ธ๋“ค

๊ธฐํ˜ธ์˜๋ฏธ๋ณด๊ธฐ
a์˜ค์ „/์˜คํ›„(AM, PM)PM
H์‹œ๊ฐ„(0~23)20
k์‹œ๊ฐ„(1~24)13
K์‹œ๊ฐ„(0~11)10
h์‹œ๊ฐ„(1~12)11
m๋ถ„(0~59)35
s์ดˆ(0~59)55
S์ฒœ๋ถ„์˜ ์ผ์ดˆ(0~999)253
zTime zone(General time zone)GMT+9:00
ZTime zone(RFC 822 time zone)+0900
โ€˜escape ๋ฌธ์ž(ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ)์—†์Œ

  • ์˜ˆ์ œ 10-10

    ํ™”๋ฉด์œผ๋กœ๋ถ€ํ„ฐ ๋‚ ์งœ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ณ„์‚ฐ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค. while๊ณผ try-catch๋ฌธ์„ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์œผ๋กœ ๋‚ ์งœ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ์ž…๋ ฅ๋ฐ›๋„๋ก ํ•œ๋‹ค.

    ์ง€์ •๋œ ํŒจํ„ด์œผ๋กœ ์ž…๋ ฅ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, parse ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์˜ˆ์™ธ(ParseException)๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— while๋ฌธ์„ ๋ฒ—์–ด๋‚˜์ง€ ๋ชปํ•œ๋‹ค.

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner s = new Scanner(System.in);
    		String pattern = "yyyy/MM/dd";
    		DateFormat df = new SimpleDateFormat(pattern);
    
    		Date inDate = null;
    
    		System.out.println("๋‚ ์งœ๋ฅผ " + pattern
    										+ "์˜ ํ˜•ํƒœ๋กœ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. (์ž…๋ ฅ ์˜ˆ : 2019/12/31)");
    
    		while(s.hasNext()) {
    			try {
    				inDate = df.parse(s.nextLine());
    				break;
    			} catch (Exception e) {
    				System.out.println("๋‚ ์งœ๋ฅผ " + pattern
    									+ "์˜ ํ˜•ํƒœ๋กœ ๋‹ค์‹œ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.(์ž…๋ ฅ์˜ˆ : 2022/08/07)");
    			}
    		} // while
    
    		Calendar cal = Calendar.getInstance();
    		cal.setTime(inDate); // Date -> Calendar ๋ณ€ํ™˜
    
    		Calendar today = Calendar.getInstance();
    		long day = (cal.getTimeInMillis() - today.getTimeInMillis()) / (1000 * 60 * 60);
    
    		System.out.println("์ž…๋ ฅํ•˜์‹  ๋‚ ์งœ๋Š” ํ˜„์žฌ์™€ " + day + "์‹œ๊ฐ„ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.");
    		
    	}	
    }

2.3 ChoiceFormat

  • ํŠน์ • ๋ฒ”์œ„์— ์†ํ•˜๋Š” ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
double[] limits = {60, 70, 80, 90};     // ๋‚ฎ์€ ๊ฐ’๋ถ€ํ„ฐ ํฐ ๊ฐ’์˜ ์ˆœ์„œ๋กœ ์ ์–ด์•ผํ•œ๋‹ค.
String[] grades = {"D", "C", "B", "A"}; // limits, grades๊ฐ„์˜ ์ˆœ์„œ์™€ ๊ฐœ์ˆ˜๋ฅผ ๋งž์ถ”์–ด์•ผ ํ•œ๋‹ค.

int[] scores = { 100, 95, 88, 70, 52, 60, 70};

ChoiceFormat form = new ChoiceFormat(limits, grades);

for (int i = 0; i < scores.length; i++) {
    System.out.println(scores[i] + ":" + form.format(scores[i]));
}

limits : ๋ฒ”์œ„์˜ ๊ฒฝ๊ณ„๊ฐ’ ์ €์žฅ

grades : ๋ฒ”์œ„์— ํฌํ•จ๋œ ๊ฐ’์„ ์น˜ํ™˜ํ•  ๋ฌธ์ž์—ด

๊ฒฝ๊ณ„๊ฐ’์€ doubleํ˜•์œผ๋กœ ๋ฐ˜๋“œ์‹œ ๋ชจ๋‘ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ. ์น˜ํ™˜๋  ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋Š” ๊ฒฝ๊ณ„๊ฐ’์— ์˜ํ•ด ์ •์˜๋œ ๋ฒ”์œ„์˜ ๊ฐœ์ˆ˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด IllegalArgumentException์ด ๋ฐœ์ƒํ•œ๋‹ค.

์˜ˆ์ œ์—์„œ๋Š” 4๊ฐœ์˜ ๊ฒฝ๊ณ„๊ฐ’์— ์˜ํ•ด โ€˜60~69โ€™, โ€˜70~79โ€™, โ€˜80~89โ€™, โ€˜90~โ€™์˜ ๋ฒ”์œ„๊ฐ€ ์ •์˜๋˜์—ˆ๋‹ค.

  • ๋ฐฐ์—ด ๋Œ€์‹  ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    String pattern = "60#D|70#C|80<B|90#A";
    int[] scores = { 91, 90, 80, 88, 70, 52, 60};
    ChoiceFormat form = new ChoiceFormat(pattern);

    ํŒจํ„ด ๊ตฌ๋ถ„์ž : โ€˜#โ€™์™€ โ€˜<โ€™ โ€˜limit#valueโ€™์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

    โ€˜#โ€™๋Š” ๊ฒฝ๊ณ„๊ฐ’์— ๋ฒ”์œ„๋ฅผ ํฌํ•จ์‹œํ‚ค์ง€๋งŒ, โ€˜<โ€™๋Š” ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.

    • ์˜ˆ์ œ 10-17
      String pattern = "60#D|70#C|80<B|90#A";
      int[] scores = { 91, 90, 80, 88, 70, 52, 60};
      
      ChoiceFormat form = new ChoiceFormat(pattern);
      
      for(int i=0;i<scores.length;i++) {
          System.out.println(scores[i]+":"+form.format(scores[i]));
      }

2.4 MessageForamt

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ•ด์ง„ ์–‘์‹์— ๋งž๊ฒŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.
    String msg = "Name : {0} \nTel : {1} \nAge : {2} \nBirthday : {3}";
    Object[] arguments = {"์ด์ž๋ฐ”", "02-123-1234", "27", "07-09"};
    String result = MessageFormat.format(msg, arguments);

    โ€˜{์ˆซ์ž}โ€™๋กœ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋  ์ž๋ฆฌ์ด๋‹ค. ์ˆœ์ฐจ์ ์ผ ํ•„์š”๋Š” ์—†๊ณ  ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์˜ˆ์ œ 10-19 - DB์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ Insert๋ฌธ
    String tableName = "CUST_INFO";
    String msg = "INSERT INTO "+ tableName +" VALUES (''{0}'',''{1}'',{2},''{3}'');";
    
    Object[][] arguments = {
            {"์ด์ž๋ฐ”","02-123-1234", "27", "07-09"},
            {"๊น€ํ”„๋กœ","032-333-1234", "33", "10-07"},
    };
    
    for(int i=0; i < arguments.length;i++) {
        String result = MessageFormat.format(msg, arguments[i]);
        System.out.println(result);
    }
  • parse()๋กœ ๋ฐ์ดํ„ฐ ๋ฝ‘์•„๋‚ด๊ธฐ

    ์•„๋ž˜ ์˜ˆ์ œ ํ™œ์šฉํ•ด ์–ด๋ ค์šด ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ž˜ ๊ธฐ์–ตํ•ด๋‘์—ˆ๋‹ค๊ฐ€ ์š”๊ธดํ•˜๊ฒŒ ์“ธ ๊ฒƒ!

    String[] data = {
            "INSERT INTO CUST_INFO VALUES ('์ด์ž๋ฐ”','02-123-1234',27,'07-09');",
            "INSERT INTO CUST_INFO VALUES ('๊น€ํ”„๋กœ','032-333-1234',33,'10-07');"
    };
    
    String pattern = "INSERT INTO CUST_INFO VALUES ({0},{1},{2},{3});";
    MessageFormat mf = new MessageFormat(pattern);
    
    for (int i = 0; i < data.length; i++) {
        Object[] objs = mf.parse(data[i]);
        for (int j = 0; j < objs.length; j++) {
            System.out.print(objs[j] + ",");
        }
        System.out.println();
    }
  • ์˜ˆ์ œ 10-21 - DB INSERT DATE ์ƒ์„ฑ
    import java.util.*;
    import java.text.*;
    import java.io.*;
    
    class MessageFormatEx4 {
    	public static void main(String[] args) throws Exception {
    		String tableName = "CUST_INFO";
    		String fileName  = "data4.txt";
    		String msg = "INSERT INTO "+ tableName + " VALUES ({0},{1},{2},{3});";
    		Scanner s = new Scanner(new File(fileName));
    
    		String pattern = "{0},{1},{2},{3}";
    		MessageFormat mf = new MessageFormat(pattern);
    		
    		while(s.hasNextLine()) {
    			String line = s.nextLine();
    			Object[] objs = mf.parse(line);
    			System.out.println(MessageFormat.format(msg, objs));
    		}
    
            s.close();	// ์ž‘์—…์ด ๋๋‚ฌ์œผ๋‹ˆ Scanner์—์„œ ์‚ฌ์šฉํ•œ ํŒŒ์ผ์„ ๋‹ซ์•„ ์ค€๋‹ค.
    	} // main
    }

10์ฑ•ํ„ฐ ์—ฐ์Šต๋ฌธ์ œ


Uploaded by N2T