Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 타임리프 - 기본기능
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch11
- @Aspect
- 2024 정보처리기사 수제비 실기
- 스프링 고급 - 스프링 aop
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch12
- 스프링 db1 - 스프링과 문제 해결
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch4
- jpa - 객체지향 쿼리 언어
- 자바의 정석 기초편 ch6
- 게시글 목록 api
- jpa 활용2 - api 개발 고급
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch1
- 코드로 시작하는 자바 첫걸음
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch14
- 2024 정보처리기사 시나공 필기
- 스프링 mvc1 - 스프링 mvc
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch8
- 자바의 정석 기초편 ch5
- 스프링 db2 - 데이터 접근 기술
- 스프링 입문(무료)
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch2
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch10 - 9 ~ 16[형식화클래스 , DecimalFormat, SimpleDateFormat] 본문
유튜브 공부/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch10 - 9 ~ 16[형식화클래스 , DecimalFormat, SimpleDateFormat]
소소한나구리 2023. 12. 8. 10:281) 형식화클래스
- java.text패키지 - DecimalFormat(10진수 숫자), SimpleDateFormat(날짜)
- 숫자와 날짜를 원하는 형식으로 쉽게 변경하여 출력하는 기능 -> 숫자와 날짜를 형식화
- 참조변수.format("문자열");
- 형식 문자열에서 숫자와 날짜를 뽑아내는 기능 -> 형식화된 물자열에서 숫자와 날짜를 뽑아냄
- 참조변수.parse(변경할 변수);
2) DecimalFormat 예제들
- 숫자 -> 형식 문자열로 변환
- 형식 문자열 -> 숫자로 변환
// 숫자를 형식 문자열로
double number = 1234567.87; // 10진수
DecimalFormat df = new DecimalFormat("#.#E0") // 지수형식표현
String result = df.format(number); // result = "1.2E6"
// 형식 문자열을 숫자로
DecimalFormat df = new DecimalFormat("#,###.##") // 형식
Number num = df.parse("1,234,567.89"); // Number = 모든 숫자 타입의 최고조상
double d = num.doubleValue(); // d = 1234567.89
(1) 예제1
- 여러가지 포맷으로 숫자를 표현
import java.text.*;
class Ex10_6 {
public static void main(String[] args) throws Exception {
double number = 1234567.89;
String[] pattern = {
"0",
"#",
"0.0",
"#.#",
"0000000000.0000",
"##########.####",
"#.#-",
"-#.#",
"#,###.##",
"#,####.##",
"#E0",
"0E0",
"##E0",
"00E0",
"####E0",
"0000E0",
"#.#E0",
"0.0E0",
"0.000000000E0",
"00.00000000E0",
"000.0000000E0",
"#.#########E0",
"##.########E0",
"###.#######E0",
"#,###.##+;#,###.##-",
"#.#%",
"#.#\u2030",
"\u00A4 #,###",
"'#'#,###",
"''#,###",
};
for(int i=0; i < pattern.length; i++) {
DecimalFormat df = new DecimalFormat(pattern[i]);
System.out.printf("%19s : %s\n",pattern[i], df.format(number));
}
} // main
}
/*
출력값
0 : 1234568
# : 1234568
0.0 : 1234567.9
#.# : 1234567.9
0000000000.0000 : 0001234567.8900
##########.#### : 1234567.89
#.#- : 1234567.9-
-#.# : -1234567.9
#,###.## : 1,234,567.89
#,####.## : 123,4567.89
#E0 : .1E7
0E0 : 1E6
##E0 : 1.2E6
00E0 : 12E5
####E0 : 123.5E4
0000E0 : 1235E3
#.#E0 : 1.2E6
0.0E0 : 1.2E6
0.000000000E0 : 1.234567890E6
00.00000000E0 : 12.34567890E5
000.0000000E0 : 123.4567890E4
#.#########E0 : 1.23456789E6
##.########E0 : 1.23456789E6
###.#######E0 : 1.23456789E6
#,###.##+;#,###.##- : 1,234,567.89+
#.#% : 123456789%
#.#‰ : 1234567890‰
¤ #,### : ₩ 1,234,568
'#'#,### : #1,234,568
''#,### : '1,234,568
*/
(2) 예제2
- 형식화된 문자열을 Number타입으로 변환 후 참조변수에 저장
- 변환한 참조변수의 값을 변환된 값들을 더블타입과 지수형식으로 변환하여 참조변수에 저장
import java.text.*;
class ex10_7 {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#,###.##");
DecimalFormat df2 = new DecimalFormat("#.###E0");
try {
Number num = df.parse("1,234,567.89"); // 형식화된 문자열을 Number타입으로 변환
System.out.print("1,234,567.89" + " -> ");
double d = num.doubleValue(); // 더블타입으로 변환
System.out.print(d + " -> ");
System.out.println(df2.format(num)); // 지수형식의 문자열
} catch(Exception e) {}
} // main
}
// 출력값
// 1,234,567.89 -> 1234567.89 -> 1.235E6
** 참고
- Integer.parseInt() 메서드는 콤마가 포함된 문자열을 숫자로 변환 못함(다른 래퍼클래스의 parse타입() 메서드도 동일함)
(3) DecimalFormat패턴표 일부
3) SimpleDateFormat 예제들
- Date -> 형식 문자열로 변환
- 형식 문자열 -> Date로 변환
// 날짜를 형식화 문자열로
Date today = new Date();
SimpleDateFormat = df = new SimpleDateFormat("yyyy-MM-dd");; // 년-월-일 형식으로 출력
// 대문자 M -> 월 , 소문자m -> 분 주의
String result = df.format(today); // 오늘 날짜를 위의 형태로 변환
// 형식화된 문자열을 다른 형식으로 변경
// 문자열 -> Date변환 (parse()사용) -> 다른 형식의 문자열 변환(format()사용)
DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일")
DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd")
Date d = df.parse("2015년 11월 23일"); // 문자열을 Date로 변환
String result = df2.format(d); // Date를 df2의 문자열로 변환 result = "2015/11/23"
(1) 예제
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));
}
}
/*
출력값
2023-12-08
'23년 12월 08일 금요일
2023-12-08 10:24:33.568
2023-12-08 10:24:33 오전
오늘은 올 해의 342번째 날입니다.
오늘은 이 달의 8번째 날입니다.
오늘은 올 해의 49번째 주입니다.
오늘은 이 달의 2번째 주입니다.
오늘은 이 달의 2번째 금요일입니다.
/*
(2) SimpleDateFormat 패턴표
- 형식 표형 시 기호를 활용하여 패턴을 입력
- 월: M
- 분: m
- 시간은 보통 H와 h를 사용함
- 연도형식 표기시 대문자 Y도 있지만 일반적으로 y를 사용하고, Y는 ISO8601 주차 시스템을 따르는 특별한 경우에만 사용
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의