Language/JAVA

[JAVA] 형식 클래스

IT수정 2024. 10. 16. 11:09

형식 클래스

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