Java - SimpleDateFormat,MessageFormat

2020. 7. 2. 22:19Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Ex {
 
    public static void main(String[] args) throws ParseException{
        
        /*
         * SimpleDateFormat 클래스
         * Date 타입 객체 (날짜 및 시각 정보)에 대한 형식화 클래스
         * format() 메서드 : Date 타입 객체를 특정 패턴에 따라 문자열로 변환하여 리턴
         * parse() : 문자열을 특정 패턴에 따라 Date 타입 객체로 변환하여 리턴
         * 
         */
        
        String source="2020년 06월 29일";
        
        //SimpleDateFormat 객체 생성시, 원본 문자열에 대한 형식을 지정
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy년 MM월 dd일");
        
        //지정된 형식에 따라 원본 데이터(문자열)을 읽어와서 Date타입 객체로 리턴
        Date parseDate=sdf.parse(source);
        //"2020년 6월 29일"문자열을 읽어들여 Date 타입으로 관리하게 되면
        //실제 날짜 정보를 갖는 Date 객체가 사용가능해짐(요일 등의 추가 정보 포함됨)
        System.out.println(parseDate);
        
        //현재 날짜 정보가 "Mon Jun 29 00:00:00 KST 2020" 형식으로 Date 객체에 저장되어있을 때
        //쉽게 알아 볼수 있는 대한민국 날짜 표기 방식으로 변환하기 위해
        //format() 메서드 적용하기 위한 형식문자 생성
        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy년 MM월 dd일(EEEE) HH:mm:ss");
        
        //생성된 형식 문자를 사용하여 Date 타입 객체를 문자열로 변환
        String formatStr=sdf2.format(parseDate);
        System.out.println(formatStr);
 
        
    }
 
}
 
import java.text.MessageFormat;
 
public class Ex2 {
 
    public static void main(String[] args) {
        
        /*
         * MessageFormat 클래스
         * 문자열 구성 시, 사용할 데이터를 연결연사자(+)를 사용하지 않고
         * 미리 데이터가 위치할 공간을 문자열에 표시한 뒤
         * 별도로 데이터를 끼워넣는 기능을 제공
         */
        
        String pattern="Java : {0}점, JSP : {1}점, Oracle : {2}점";
        
//        //MessageFormat.format() 메서드에 원본 문자열과 끼워넣을 데이터를 전달
//        //끼워넣을 데이터는 가변인자 형태이므로 순서대로 갯수 제한없이 전달
//        String result=MessageFormat.format(pattern, 100,50,80);
        
        
        //배열을 사용하여 저장된 여러개의 데이터를 전달할 수도 있다.
//        int[] score= {100,50,80};
//        
//        String result=MessageFormat.format(pattern, score[0],score[1],score[2]);
        
        
        //기본 데이터 타입이 아닌 Wrapper 클래스 타입으로 배열 생성시
        //배열 자체를 그대로 가변인자에 전달하여 사용가능
        Integer[] score= {100,50,80};
        
        String result=MessageFormat.format(pattern, score);
        
        
        System.out.println(result);
        System.out.println("-------------------------------------");
        
        String pattern2="이름 : {0}, Java : {1}점, JSP : {2}점, Oracle : {3}점";
        //학생 여러명의 점수를 메모장 등에 텍스트로 나열했다고 가정
        String text="홍길동:100:90:85,이순신:80:80:80,강감찬:100:50:60";
        
        //학생별로 구분된 문자열(,)을 기준으로 문자열 분리= split() 메서드 활용
        String[] studentInfo=text.split(",");//분리된 결과를 String[]타입으로 리턴
        
        for(String s:studentInfo) {
//            System.out.println(s);
            
            //학생1명의 데이터 문자열을 ":" 기호 기준으로 다시 분리
            String[] student=s.split(":");
//            System.out.println(MessageFormat.format(pattern2, student[0],student[1],student[2],student[3]));
            
            //가변인자 부분의 데이터를 String[]타입 그대로 전달하여 사용가능
            System.out.println(MessageFormat.format(pattern2, student));
        }
 
        
    }
 
}
 
cs

 

간단한 날짜를 정보로 나타내는 클래스와 문자를 출력할 시 미리 출력 형식을 정해 놓고 따로 + 연결 연산자를 사용하지 않고 데이터를 형식에 끼워 넣는 클래스를 배워보았다. 정해진 형식이 필요하고 표시해야 할 데이터가 많으면

아주 유용하게 사용할 수있을 클래스이니깐 잘 외워두었다가 이런 클래스가 있었지 하며 바로 사용할 수 있게 

기억해 놓아야 겠다.

'Java' 카테고리의 다른 글

Java - 예외(Exception),try~catch  (0) 2020.07.02
Java - 정규표현식,Pattern,Matcher  (0) 2020.07.02
Java- enum  (0) 2020.07.01
Java - Date,time,Calendar  (0) 2020.06.30
Java - Generic  (0) 2020.06.30