Java/Java
Java 형식화 클래스 - Format, DecimalFormat, SimpleDateFormat
ysk(0soo)
2022. 12. 8. 23:15
형식화 클래스
DecimalFormat
- DecimalFormat을 이용하면 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있다.
- 반대로 일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환도 가능하다.
- 형식화 클래스는 패턴을 정의하는 것이 전부다.
- DecimalFormat 사용법
double number = 1234567.89; // 1.원하는 출력형식의 패턴을 작성하여 DecimalFormat 인스턴스를 생성 DecimalFormat df = new DecimalFormat("#.#E0"); // 2.출력하고자 하는 문자열로 format 메소드를 호출 String result = df.format(number);
SimpleDateFormat
- 날짜 데이터를 원하는 형태로 다양하게 출력
- 사용방법
- 원하는 출력 형식의 패턴을 작성하여 SimpleDateFormat 인스턴스를 생성
- 출력하고자 하는 Date 인스턴스를 가지고 format(Date d)를 호출
Date today = new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String result = df.format(today); //오늘 날짜를 yyyy-MM-dd 형태로 반환
parse(String source)
를 사용하여 날짜 데이터의 출력형식 변환 가능- SimpleDateFormat의 parse(String source) 는 문자열 source를 날짜 Date 인스턴스로 변환해줌
DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일"); DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd"); Date d = df.parse("2018년 10월 3일"); System.out.println(df2.format(d)); // 2018/10/03
- Date 인스턴스를 Calendar 인스턴스로 변환할 때는 Calendar클래스의 setTime()을 사용하면 된다.
Date And Time Patterns (시간과 날짜에 사용되는 패턴들)
Letter | Date or Time Component | Presentation | Examples |
---|---|---|---|
G |
연대(BC, AD) | Text | AD |
y |
년도 | Year | 1996 ; 96 |
Y |
주 년 | Year | 2009 ; 09 |
M |
올해의 달 | Month | July ; Jul ; 07 |
w |
연중 주 (몇 번째 주) | Number | 27 |
W |
월의 주 (월의 몇번째 주) | Number | 2 |
D |
년의 몇 번째 일 (1~366) | Number | 189 |
d |
월의 몇 번째 일(1~31) | Number | 10 |
F |
월의 몇 번째 요일(1~5) | Number | 2 |
E |
주의 요일 이름 | Text | Tuesday ; Tue |
u |
요일 번호(1 = 월요일, ..., 7 = 일요일) | Number | 1 |
a |
오전/오후(AM/PM) 마커 | Text | PM |
H |
시간(0-23) | Number | 0 |
k |
시간(1-24) | Number | 24 |
K |
오전/오후 시간(0-11) | Number | 0 |
h |
오전/오후 시간(1-12) | Number | 12 |
m |
시간의 분 | Number | 30 |
s |
분당 초 | Number | 55 |
S |
밀리초 | Number | 978 |
z |
시간대 (General time zone) | General time zone | Pacific Standard Time ; PST ; GMT-08:00 |
Z |
시간대 (RFC 822 timezone) | RFC 822 time zone | -0800 , +0900 |
X |
시간대 (ISO 8601 timezone) | ISO 8601 time zone | -08 ; -0800 ; -08:00 |
ChoiceFormat
- ChoiceFormat은 특정 범위에 속하는 값을 문자열로 변환
- 연속적/불연속적인 범위의 값 처리에 유용(예를 들어 90점까지 A, 80점까지 B, ..)
- 패턴을 사용할 경우 limit#value 형태로 사용
- 구분자로
#
는 경계값 포함,<
는 미포함
- 구분자로
public int someMethod(int score) {
double[] limits = {60, 70, 80, 90}; // 낮은 값부터 큰 값의 순서로 적어야함
// limits과 ㅎrades 간의 순서와 갯수를 맞춰야함
String[] grades = {"D", "C", "B", "A"};
ChoiceFormat form = new ChoiceFormat(limits, grades);
return form.format(score);
}
MessageFormat
- MessageFormat은 데이터를 정해진 양식에 맞게 출력할 수 있도록 도와준다
public void someMethod() {
String msg = "Name : {0}, Tel: {1}, age:{2}, birthday:{3}";
Object[] args = {"영수", "010-1111-1234", "28", "02-23"}
String result = MessageFormat.format(msg, args);
}
참조
- 자바의 정석