728x90
형식화 클래스
학점을 처리하는 프로그램을 작성할 때, 각 학점의 평균을 소수점 2자리로 일정하게 맞춰서 출력하기 위해서는 다음과 같은 과정을 거쳐야 한다.
- 평균값에 100을 곱한다
- int로 형변환한다.
- 100f로 나눈다.
- Math.round()로 반올림한다.
- ...
(꼭 이렇게 안 할수도 있지만!)
날짜를 형식에 맞게 출력하려면, 숫자보다 훨씬 더 복잡하다.
자바에서는 이러한 문제들을 쉽게 해결할 수 있도록 형식화 클래스를 제공한다.
이 클래스는 java.text 패키지에 포함되어 있으며 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 표준화하여 제공한다.
DecimalForamt
숫자를 형식화 하는데 사용된다.
기호 | 의미 | 패턴 | 결과 (1234567.89) |
0 | 10진수 (값이 없는 부분은 0으로 채운다) | 0 0.0 000000000.000 |
1234568 (반올림) 1234567.9 (반올림) 001234567.890 (없는자리 0) |
# | 10진수 | # #.# #########.### |
1234568 1234567.9 1234567.89 |
. | 소수점 | #.# | 1234567.9 |
- | 음수부호 | #.#- -#.# |
1234567.9- -1234567.9 |
, | 단위 구분자 | #,### #,#### #,###.## #,####.## |
1,234,568 123,4568 1,234,567.89 123,4567.89 |
E | 지수기호 | #E0 0E0 ##E0 00E0 ####E0 |
.1E7 1E6 1.2E6 12E5 123.5E4 |
; | 패턴 구분자 | #,###.##+;#,###.##- | 1,234,567.89+(양수일 때) 1,234,567.89-(음수일 때) (;을 기준으로 양수이면 왼쪽이, 음수이면 오른쪽이 실행) |
% | 퍼센트 | #.#% | 123456789* |
\u2030 | 퍼일(퍼센트 x 10) | #.#\u2030 | 123456789(퍼밀기호) |
\u00A4 | 통화 | \u00A4 #,### | ₩ 1,234,568 |
' | escape 문자 | '#'#,### ''#,### |
#1,234,568 '1,234,568 |
사용
double a =4.24;
String b ="4.24";
DecimalFormat df = new DecimalFormat("0");
DecimalFormat df2 = new DecimalFormat();
Number parse = df2.parse(b);
double i = parse.doubleValue();//4.24
String format = df.format(i);
System.out.println(parse);//4.24 출력
- parse는 String을 Number로
- format은 숫자를 형식에 맞게 변환시킨다.
SimpleDateFormat
Date와 Calender 등 날짜 데이터를 형식화 하는데 사용한다.
기호 | 의미 | 보기 |
G | 연대(BC, AD) | AD |
y | 연도 | 2021 |
M | 월(1~12 또는 1월~12월) | 12 또는 12월, DEC |
w | 년의 몇 번째 주(1~53) | 51 |
W | 월의 몇 번째 주(1~5) | 3 |
D | 년의 몇 번째 일(1~366) | 350 |
d | 월의 몇 번째 일(1~31) | 16 |
F | 월의 몇 번째 요일(1~5) | 3 |
E | 요일 | 목 |
a | 오전/오후(AM,PM) | 오후 |
H | 시간(0~23) | 16 |
k | 시간(1~24) | 16 |
K | 시간(0~11) [12시를 0으로 표시] | 4 |
h | 시간(1~12) [12시를 12로 표시] | 4 |
m | 분(0~59) | 31 |
s | 초(0~59) | 41 |
S | 천분의 일초(0~999) | 717 |
z | Time zone(General time zone) | KST |
Z | Time zone(RFC 822 time zone) | +0900 |
' | escape문자 (특수문자를 표현하는데 사용) |
사용
Timestamp today = Timestamp.valueOf(LocalDateTime.now()); //LocalDateTime을 Date로 변환
SimpleDateFormat s1, s2, s3, s4, s5, s6, s7,s8,s9;
s1 = new SimpleDateFormat("yyyy-MM-dd");
s2 = new SimpleDateFormat("yy년 MMM dd일 E요일");
s3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
s4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
s5 = new SimpleDateFormat("오늘은 올 해의 D번째 날입니다");
s6 = new SimpleDateFormat("오늘은 이 달의 d번째 날입니다");
s7 = new SimpleDateFormat("오늘은 올 해의 w번째 주입니다");
s8 = new SimpleDateFormat("오늘은 이 달의 W번째 주입니다");
s9 = new SimpleDateFormat("오늘은 이 달의 F번째 E요일입니다");
System.out.println(s1.format(today));
System.out.println(s2.format(today));
System.out.println(s3.format(today));
System.out.println(s4.format(today));
System.out.println(s5.format(today));
System.out.println(s6.format(today));
System.out.println(s7.format(today));
System.out.println(s8.format(today));
System.out.println(s9.format(today));
📔 Reference
[JAVA의 정석 기초편 - 남궁성]
728x90
'☕️ Java > 기본' 카테고리의 다른 글
[JAVA] List 정렬하기 (ArrayList, LinkedList 등) (0) | 2021.12.16 |
---|---|
[JAVA] Stream의 toList()를 사용하여 ArrayList로 형변환할 때 발생하는 오류 (0) | 2021.12.16 |
[JAVA] 배열에서 ArrayList, ArrayList에서 배열로 (0) | 2021.12.16 |
[JAVA] 자바 Date to LocalDateTime (& Inversion) (0) | 2021.12.16 |
[JAVA] 자바 9~ 17버전의 주요 특징 (0) | 2021.12.15 |