🔥 Vamos/Java
1101 | 자바의 정석 기초편 :: ch10-6~10-12
unikue
2022. 11. 1. 12:23
Calendar class 예제
✔ add()
: 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향O)
Calender date = Calender.getInstance();
date.clear(); // 모든 필드 초기화
date.set(2022,7,31); //2022년 8월 31일로 설정
date.add(Calendar.DATE, 1); //date+1 다른 필드에 영향을 주므로 월도 변경되어 9월 1일 반환
date.add(Calendar.MONTH,-8); //month-8
✔ roll()
: 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향)
date.set(2022,7,31); // 2022년 8월 31일 설정
//add()와 달리 roll()은 다른 필드에 영향 없음
date.roll(Calendar.DATE,1); // 날짜(DATE)에 +1 8월 1일 반환
date.roll(Calendar.MONTH,-8); // 월(MONTH)에서 -8 2022년 12월 31일 반환
형식화 클래스
: java.text 패키지의 DecimalFormat (숫자 형식 처리), SimpleDateFormat (날짜 형식화)
: 형식화- 숫자랑 날짜를 원하는 형식으로 출력 (숫자, 날짜 ▶ 형식문자열)
✔ DecimalFormat
: 숫자를 형식화할때 사용 (숫자 ▶ 형식문자열)
: DecimalFormat에서 형식을 지정하고 format()으로 문자열 전환
double number = 1234567.89; // 10진수
DecimalFormat df = new DecimalFormat("#.#E0"); // 형식
String result = df.format(number); // result = 1.2E6 1.2*10^6 지수형태로 표현
패턴 | 의미 | 결과 (12.34) |
0 0.0 0000.0000 |
10진수 (값이 없을때는 0) | 13 12.4 0012.3400 |
# #.# ####.#### |
10진수 | 13 12.4 12.34 |
#.#E0 0.0E0 00.0000E0 ##.####E0 |
지수 | 1234567.89 일때 1.2E6 1.2E6 12.34567890E5 1.23456789E6 |
: 형식문자열에서 숫자와 날짜를 뽑아내는 기능 (형식문자열 ▶ 숫자, 날짜)
: DecimalFormat으로 형식 지정하고 parse로 숫자 전환
DecimalFormat df = new DecimalFormat ("#,###.##"); // 형식
Number num = df.parse("1,234,567.89");
double d = num.doubleValue(); // 1234567.89
* Integer.parseInt()는 콤마(,)가 포함된 문자열을 숫자로 변환 못함
public static void main(String[] args){
DecimalFormat df = new DecimalFormat ("#,###.##");
DecimalFormat df2 = new DecimalFormat ("#.###E0");
try{
System.out.println (Double.parseDouble("123,456.789")); // parse는 콤마전환 못함
System.out.println (Double.parseDouble("123456.789")); // 123456.789 출력
Number num = df.parse("1,234,567.89"); // decimalformat 클래스로 생성해서 사용해야함
//num = 1,234,567.89 콤마가 있는 숫자 출력
double d = num.doubleValue() ; // double타입으로 출력 d=1234567.89
System.out.println(df2.format(num)); // df2포맷으로 형식문자화되어 출력 1.235E6
} catch (Exception e){
e.printStackTrace();
}
SimpleDateFormat
: 날짜와 시간을 다양한 형식으로 출력하게 해준다
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); // M-Month, m-minutes
String result = df.format(today);
: 특정 형식으로되어있는 문자열에서 날짜와 시간을 뽑아낼 수 있다
DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일"); // df형식을 df2형식으로 출력하려함
DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");
Date d = df.parse("2022년 11월 1일"); //df에서 먼저 날짜값을 숫자로 뽑아냄
String result = df2.format(d); // 숫자를 다시 형식문자열로 전환