본문 바로가기

Java

Java 형식화 클래스 DecimalFormat, SimpleDateFormat

 

java.text패키지의 DecimalFormat(10진수 형식화), SimpleDateFormat(날짜 형식화)

 

1. DecimalFormat()

- 10진수(숫자)를 원하는 형식으로 쉽게 출력 가능(10진수 -> 형식 문자열)

double number = 1234567.89;
DecimalFormat df = new DecimalFormat("#.#E0"); // 지수형식 
String result = df.format(number); // result = "1.2E6"

 

- 형식 문자열에서 10진수(숫자)를 뽑아내는 기능(형식 문자열 -> 10진수)

DecimalFormat df = new DecimalFormat("#,###.##");
Number num = df.parse("1,234,567.89");
double d = num.doubleValue(); // 1234567.89

 

- 사용방법

// double형 10진수 1234567.89를 "#.#E0" 지수 형식으로 변환하는 예시
double number = 1234567.89;
DecimalFormat decimalFormat = new DecimalFormat("#.#E0"); // 1. 원하는 출력형식의 패턴을 작성하여 DecimalFormat 인스턴스 생성
String result = decimalFormat.format(number); // 2. 출력할 문자열로 format메서드 호출

 

 

2. SimpleDateFormat()

- 날짜 형식화

- 날짜를 원하는 형식으로 쉽게 출력 가능(날짜 -> 형식 문자열)

- 날짜 형식 종류

 

- 사용 방법

// 1. 원하는 출력 형식 패턴을 작성하여 SimpleDateFormat 인스턴스 생성
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd"); 

// 2. 출력하려는 Date인스턴스로 format(Date d)메서드 호출하여 원하는 출력 형식 패턴으로 변환된 문자열을 얻음
Date today = new Date(); // 오늘 날짜를 Date인스턴스로 사용하기 
String result = df.format(today);

 

- 예제

import java.util.*;
import java.text.*;

class Ex10_8 {
	public static void main(String[] args) {
		Date today = new Date();

		SimpleDateFormat sdf1, sdf2, sdf3, sdf4;
		SimpleDateFormat sdf5, sdf6, sdf7, sdf8, sdf9;

		sdf1 = new SimpleDateFormat("yyyy-MM-dd");
		sdf2 = new SimpleDateFormat("''yy년 MMM dd월 E요일");
		sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		sdf4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");

		sdf5 = new SimpleDateFormat("오늘은 올 해의 D번째 날입니다.");
		sdf6 = new SimpleDateFormat("오늘은 이 달의 d번째 날입니다.");
		sdf7 = new SimpleDateFormat("오늘은 올 해의 w번째 주입니다.");
		sdf8 = new SimpleDateFormat("오늘은 이 달의 W번째 주입니다.");
		sdf9 = new SimpleDateFormat("오늘은 이 달의 F번째 E요일입니다.");

		System.out.println(sdf1.format(today));	// format(Date d)
		System.out.println(sdf2.format(today));
		System.out.println(sdf3.format(today));
		System.out.println(sdf4.format(today));
		System.out.println();
		System.out.println(sdf5.format(today));
		System.out.println(sdf6.format(today));
		System.out.println(sdf7.format(today));
		System.out.println(sdf8.format(today));
		System.out.println(sdf9.format(today));
	}
}

 

- 형식 문자열에서 날짜를 뽑아내는 기능(형식 문자열 -> 날짜)

import java.util.*;
import java.text.*;

class Ex10_9 {
	public static void main(String[] args) {
		DateFormat df  = new SimpleDateFormat("yyyy년 MM월 dd일");
		DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");

		try {
			Date d = df.parse("2022년 12월 30일");
			System.out.println(df2.format(d));
		} catch(Exception e) {}
	} // main
}