자바의 정석 10장 (26일차) - 형식화 클래스 (SimpleDateFormat, DecimalFormat)

728x90

DecimalFormat

숫자를 형식화할 때 사용한다.

형식화한 후에는 int값이 아니라 String값으로 변환됨.

 

0, #, E를 적절히 사용하여 출력하고 싶은 format을 지정해서 출력하자

 

출력문: 1.22000 | 1.22

		double i = 1.22;
		DecimalFormat df = new DecimalFormat("0.00000");
		DecimalFormat df2 = new DecimalFormat("#.####");
//		DecimalFormat df2 = new DecimalFormat("#.##00"); // 오류발생
//		뒤에 소수점 붙일 때는 아예 0만쓰던지 #만 써야함
		System.out.println(df.format(i));
//		0일 경우 10진수가 존재할 경우 그 값을 출력하고 없을 경우 0을 출력
//		1.22000
		System.out.println(df2.format(i));
//		#일 경우 값이 있으면 출력하고 없으면 공백 추출
//		1.22

SimpleDateFormat

날짜를 형식화하여 사용한다.

 

DecimalFormat과 동일하게 형식을 먼저 선언한 후에 Date클래스에서 받은 날짜데이터를 형식에 맞춰 출력한다.

  • Date클래스를 String형식으로 출력 가능하고
  • String클래스를 맞춰진 형식을 기준으로 Date클래스로 변환이 가능하다
    • 이 때 형식의 기호(h, y등)가 맞지 않거나 대소문자가 틀리다면 잘못된 형식으로 재반환된다.

출력문:

2022-02-17
Fri Jan 07 00:00:00 KST 2022

		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println(sdf.format(d));
//		받은 Date클래스를 SimpleDateFormat으로 변환
		
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy년 dd월");
//		기존에 있던 SimpleDateFormat을 기준으로 가지고있는 String 클래스를 Date 클래스로 변환
//		이 때 MM과 dd는 생략이 가능한데 yyyy는 생략이 안됨
		String result = "2022년 07월 17일";
		try {
			Date dd = sdf2.parse(result);
//			parse를 사용하여 변환하는데 이 때 try & catch가 사용되어야 한다
			System.out.println(dd);
		} catch (ParseException e) {
			e.printStackTrace();
		}
728x90