🔥 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); // 숫자를 다시 형식문자열로 전환