형식 클래스
Format(형식) 클래스는 숫자 또는 날짜를 원하는 형태의 문자열로 변환해 주는 기능을 제공한다. Format 클래스는 java.text 패키지에 포함되어 있다.
| Format 클래스 | 설명 |
| DecimalFormat | 숫자를 형식화된 문자열로 변환 |
| SimpleDateFormat | 날짜를 형식화된 문자열로 변환 |
DecimalFormat
DecimalFormat은 숫자를 형식화된 문자열로 변환하는 기능을 제공한다. 원하는 형식으로 표현하기 위해 다음과 같은 패턴을 사용한다.
| 기호 | 의미 | 패턴 예 | 1234567.89 > 변환 결과 |
| 0 | 10진수(빈자리는 0으로 채움) | 0 0.0 0000000000.00000 |
1234568 1234567.9 0001234567.89000 |
| # | 10진수(빈자리는 채우지 않음) | # #.# ##########.##### |
1234568 1234567.9 1234567.89 |
| . | 소수점 | #.0 | 1234567.9 |
| - | 음수 기호 | +#.0 -#.0 |
+1234567.9 -1234567.9 |
| , | 단위 구분 | #,###,0 | 1,234,567,9 |
| E | 지수 문자 | 0.0E0 | 1.2E6 |
| ; | 양수와 음수의 패턴을 모두 기술할 경우, 패턴 구분자 | +#,### ; -#,### | +1,234,568(양수일 때) -1,234,568(음수일 때) |
| % | % 문자 | #.# % | 123456789 % |
| \u00A4 | 통화 기호 | \u00A4 #,### | \1,234,568 |
패턴 정보와 함께 DecimalFormat 객체를 생성하고 format() 메서드로 숫자를 제공하면 패턴에 따른 형식화된 문자열을 얻을 수 있다.
DecimalFormat df = new DecimalFormat("#,###.0");
String result = df.format(1234567.89); // 1,234,567.9
예제 코드
package ch12;
import java.text.DecimalFormat;
public class DecimalFormatExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
double num = 1234567.89;
DecimalFormat df;
df = new DecimalFormat("#,###");
System.out.println(df.format(num));
df = new DecimalFormat("#,###.0");
System.out.println(df.format(num));
}
}
출력 결과
1,234,568
1,234,567.9
SimpleDateFormat
SimpleDateFormat은 날짜를 형식화된 문자열로 변환하는 기능을 제공한다. 원하는 형식으로 표현하기 위해 다음과 같은 패턴을 사용한다.
| 패턴 문자 | 의미 | 패턴 문자 | 의미 |
| y | 년 | H | 시(0~23) |
| M | 월 | h | 시(1~12) |
| d | 일 | K | 시(0~11) |
| D | 월 구분이 없는 일(1~365) | k | 시(1~24) |
| E | 요일 | m | 분 |
| a | 오전/오후 | s | 초 |
| w | 년의 몇 번째 주 | S | 밀리세컨드(1/1000초) |
| W | 월의 몇 번째 주 |
패턴에는 자릿수에 맞게 기호를 반복해서 작성할 수 있다. 예를 들어 yyyy는 연도를 4자리로, MM과 dd는 각각 월과 일을 2자리로 표시하라는 의미이다. 패턴 정보와 함께 SimpleDateFormat 객체를 생성하고 format() 메서드로 날짜를 제공하면 패턴과 동일한 문자열을 얻을 수 있다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
String strDate = sdf.format(new Date());
예제 코드
package ch12;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(now));
sdf = new SimpleDateFormat("yyyy년 MM월 dd일");
System.out.println(sdf.format(now));
sdf = new SimpleDateFormat("yyyy.MM.dd a HH:mm:ss");
System.out.println(sdf.format(now));
sdf = new SimpleDateFormat("오늘은 E요일");
System.out.println(sdf.format(now));
sdf = new SimpleDateFormat("올해의 D번째 날");
System.out.println(sdf.format(now));
sdf = new SimpleDateFormat("이달의 d번째 날");
System.out.println(sdf.format(now));
}
}
출력 결과
2024-10-16
2024년 10월 16일
2024.10.16 오전 11:09:05
오늘은 수요일
올해의 290번째 날
이달의 16번째 날
'Language > JAVA' 카테고리의 다른 글
| [JAVA] 리플렉션 (1) | 2024.10.16 |
|---|---|
| [JAVA] 정규 표현식 클래스 (1) | 2024.10.16 |
| [JAVA] 날짜와 시간 클래스 (0) | 2024.10.16 |
| [JAVA] 수학 클래스 (2) | 2024.10.16 |
| [JAVA] 포장 클래스 (1) | 2024.10.16 |