public class Formatter01 {
public static void main(String[] args) {
// 날짜 데이터 클래스, Calendar 와는 다름
Date today = new Date(); //java.util.Date
System.out.println(today);
// 날짜 서식 클래스
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
// 날짜 데이터를 서식 데이터에 맞춰서 적용후 출력
System.out.println( sdf1.format( today ) );
// 날짜 서식 레퍼런스 변수들
SimpleDateFormat sdf2, sdf3, sdf4, sdf5, sdf6, sdf7, sdf8, sdf9;
// 서식 인스턴스 생성 및 저장
sdf2 = new SimpleDateFormat("yy년 MM월 dd일 E요일");
sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
sdf4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
// today 적용후 출력
System.out.println(sdf2.format(today));
System.out.println(sdf3.format(today));
System.out.println(sdf4.format(today));
// y : 년도를 표시할 자리수 문자(yyyy:2020 yy:20)
// M : 월을 표시할 자리수 문자 (MM:01~12 M:1~12)
// d : 일을 표시하는 자리수 문자 (dd: 01~31 d:1~31)
// H : 시에 해당하는 자리수 문자(HH : 01~23 H:1~23)
// h : 시에 해당하는 자리수 문자(hh : 01~12 h:1~12)
// m : 분
//s : 초
//S : 밀리초
// 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(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));
Calendar cal = Calendar.getInstance();
Date day = cal.getTime(); // Calendar 객체의 현재 날짜값을 Date 값으로 변환
sdf1 = new SimpleDateFormat("yyyy-MM-dd");
sdf2 = new SimpleDateFormat("yy-MM-dd E요일");
sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
sdf4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
System.out.println(sdf1.format(day)); // format(Date d)
System.out.println(sdf2.format(day));
System.out.println(sdf3.format(day));
System.out.println(sdf4.format(day));
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Formatter02 {
public static void main(String[] args) throws ParseException {
String s2 = "2020/11/24";
SimpleDateFormat sdf1= new SimpleDateFormat("yyyy/MM/dd");
// SimpleDateFormat에는 parse메서드를 이용하여 문자열을 날짜로 변환해주는 기능이 있음
// 다만 변환을 위해서는 설정된 서식을 반드시 지켜야하는 제약이 있음
Date d = sdf1.parse(s2);
// parse를 이용해서 Date 형식으로 변경이 되어야 아래의 포맷적용이 가능
SimpleDateFormat sdf2= new SimpleDateFormat("yyyy년 MM월 dd일");
System.out.println(sdf2.format(d));
}
}
public class Formatter03 {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("0000.00");
double number = 123.123456;
System.out.printf("%19s : %f --> %s\n", "0000.00", number, df.format(number));
// 양식문자 0 : 표시할 숫자들의 자리 표현. 0:숫자 한자리 00:숫자두자리 등
// 정수부분에서 표시할 숫자는 많은데 0의 갯수가 모자르면 필요한 만큼 0의 갯수를 자동 추가 적용
// 숫자 12345, 양식 "000" -> 표시 12345
// 숫자자리수보다 0의 갯수가 많으면 많은 만큼 0으로 채워서 표시
// 숫자 123, 양식 "00000" -> 표시 00123
// 소수점 아래에 대해서는 반대로 0의 갯수만큼만 소수점 아래 자리수를 표시.
// 0갯수로 인해 표시되지 못하는 소수점 자리 중 가장 윗자리에서 반올림
// 남는 자리에 강제로0 으로 채우는 방식은 동일
// 0.1264(0.00)->0.13 0.1(0.00) -> 0.10
number = 123456.71289;
df = new DecimalFormat("0.000");
System.out.printf("%19s : %f -> %s\n", "0.000", number, df.format(number));
number = 123456789.0;
// 천단위 구분기호 표시 패턴 0,000,000
df = new DecimalFormat("0,000.00");
System.out.printf("%19s : %f -> %s\n", "0,000.00", number, df.format(number));
// 소수점아래로 표시할 내용이 없는데 양식에 소수점 자리 0이 있다면 강제0으로 표시
df = new DecimalFormat("0,000");
number = 89.0;
System.out.printf("%19s : %f -> %s\n", "0,000",number, df.format(number));
// 무효의 0을 표시하지 않는 #을 0대신 사용
df = new DecimalFormat("#,###");
System.out.printf("%19s : %f -> %s\n", "#,###",number, df.format(number));
// 10의 자리든 100의 자리든 표시할 숫자가 있을때만 표시 - 강제 0표시 안함
// 표시할 숫자가 1000 을 넘어갈때만 (,)를표시
number = 123456.0;
System.out.printf("%19s : %f -> %s\n", "#,###",number, df.format(number));
// #을 이용한 소수점 표시 : # 의갯수보다 표시할 숫자가 많으면 # 갯수만큼 표시
// # 의 갯수보다 표시할 숫자가 적으면 숫자있는 만큼만 표시
number = 123456.7128;
df = new DecimalFormat("#,###.###");
System.out.printf("%19s : %f -> %s\n", "#,###.###",number, df.format(number));
number = 123456.7;
System.out.printf("%19s : %f -> %s\n", "#,###.###",number, df.format(number));
number = 1234;
df = new DecimalFormat("₩ #,### 원"); // 단위 또는 기호 첨가
System.out.printf("%19s : %f -> %s\n", "#,### 원",number, df.format(number));
number = 0.8539;
df = new DecimalFormat("#.#%"); //100을 곱해서 %로 표시
System.out.printf("%19s : %f -> %s\n", "#.#%",number, df.format(number));
number = 123.172839;
System.out.println("123.172839 ->" + (int)(number*10)/10.0);
df = new DecimalFormat("0.0");
System.out.println("123.172839 ->" + df.format(number));
}
}