반응형
01. java.text 패키지
- 값을 변환하는 기능을 제공하는 클래스가 선언된 패키지
02. DecimalFormat클래스 - Number값 변환
1. 개념
- Number 객체(숫자값)와 String 객체를 서로 변환하기 위한 기능을 메소드로 제공하는 클래스
2. DecimalFormat 생성자로 객체생성
- DecimalFormat(String pattern) 생성자
- 숫자값에 대한 패턴정보가 저장된 DecimalFormat 객체를 생성하기 위한 생성자
- 패턴문자 : #(숫자 - 공백) , 0(숫자 - 0) , 콤마(,) , 소숫점(.) , 달러($)
DecimalFormat decimalFormat=new DecimalFormat("###,###,##0");
3. DecimalFormat 객체의 메소드
DecimalFormat.format(long number) - String객체로 반환
- 매개변수로 숫자값을 전달받아 DecimalFormat 객체에 저장된 패턴정보의 문자열로 변환하여 반환하는 메소드
- 즉, 내가 원하는 형태의 문자열로 만들 수 있다는 의미
int money=100_000_000;
System.out.println("금액 = "+money+"원");
//금액 = 100000000원
System.out.println("금액 = "+decimalFormat.format(money)+"원");
//금액 = 100,000,000원
DecimalFormat.applyPattern(String pattern) - 패턴정보 변경
- DecimalFormat 객체에 저장된 패턴정보를 변경하는 메소드
decimalFormat.applyPattern("$##,###,##0.00");
System.out.println("금액 = "+decimalFormat.format(money));
//금액 = $100,000,000.00
DecimalFormat.getInstance() - DecimalFormat 객체로 반환
- 기본 패턴정보가 저장된 DecimalFormat 객체를 반환하는 메소드
System.out.println("금액 = "+DecimalFormat.getInstance().format(money)+"원");
//금액 = 100,000,000원
DecimalFormat.getCurrencyInstance() - DecimalFormat 객체로 반환
- 기본 패턴정보가 저장된 DecimalFormat 객체를 반환하는 메소드
- 변환되는 문자열 앞에 시스템에서 사용하는 화폐단위가 추가되어 변환
System.out.println("금액 = "+DecimalFormat.getCurrencyInstance().format(money));
//금액 = ₩100,000,000
03. SimpleDateFormat클래스 - Date값 변환
1. 개념
- Date객체와 String객체를 서로 변환하기 위한 기능을 메소드로 제공하는 클래스
- SimpleDateFormat클래스 & Date클래스 함께 사용하면 Calendar클래스보다 효율적으로 사용 가능
- ex. 간단한 디지털시계 프로그램
2. Date & SimpleDateFormat 생성자로 객체생성
- SimpleDateFormat(String pattern) 생성자 : 날짜와 시간에 대한 패턴정보가 저장된 SimpleDateFormat객체를 생성하기 위한 생성자
- 패턴정보란? 패턴문자를 이용하여 표현된 문자열
- 패턴문자
- y(년) , M(월) , d(일) , E(요일)
- AM|PM(오전|오후) , H(시:24) , h(시:12) , m(분) , s(초)
//현재 날짜와 시간 저장되어있음
Date now = new Date();
//패턴정보 저장되어있음
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy년 MM월 dd일 E요일");
2. SimpleDateFormat 객체의 메소드
SimpleDateFormat.format(Date date) - String객체로 반환
- 매개변수로 전달받은 Date 객체에 저장된 날짜와 시간을 SimpleDateFormat 객체에 저장된 패턴정보를 이용하여 문자열로 변환하여 반환하는 메소드
- 즉, 내가 원하는 형태의 문자열로 만들 수 있다는 의미
String printDate=dateFormat.format(now); //Date >> String
System.out.println("현재 = "+printDate);
//현재 = 2022년 10월 06일 목요일
SimpleDateFormat.applyPattern(String pattern) - 패턴정보 변경
- SimpleDateFormat 객체에 저장된 패턴정보를 변경하는 메소드
dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("현재 = "+dateFormat.format(now));
//현재 = 2022-10-06 19:46:29
SimpleDateFormat.parse(String str) - Date객체로 반환
- SimpleDateFormat 객체에 저장된 패턴정보 형식의 문자열을 매개변수로 전달받아 Date 객체로 변환하여 반환하는 메소드
- SimpleDateFormat 객체에 저장된 패턴정보와 일치하지 않는 문자열을 매개변수에 전달한 경우 ParseException 발생 >>> try-catch로 예외처리하기
String want = "2000-01-01 00:00:00"; //SimpleDateFormat객체에 저장된 패턴정보 형식의 문자열 작성
Date wantDate = dateFormat.parse(want); //String >> Date
System.out.println("wantDate = "+wantDate);
//wantDate = Sat Jan 01 00:00:00 KST 2000
04. SimpleDateFormatApp프로그램
package xyz.itwill.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//java.text 패키지 : 값을 변환하는 기능을 제공하는 클래스가 선언된 패키지
//SimpleDateFormat : Date 객체와 String 객체를 서로 변환하기 위한 기능을 메소드로 제공하는 클래스
//DecimalFormat : Number 객체(숫자값)와 String 객체를 서로 변환하기 위한 기능을 메소드로 제공하는 클래스
public class SimpleDateFormatApp {
public static void main(String[] args) {
//1.
Date now=new Date();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy년 MM월 dd일 E요일");
//2.
String printDate=dateFormat.format(now);//Date >> String
System.out.println("현재 = "+printDate); //현재 = 2022년 10월 06일 목요일
//3.
dateFormat.applyPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("현재 = "+dateFormat.format(now)); //현재 = 2022-10-06 20:15:40
//4.
//형식에 맞는 날짜와 시간 작성 시
String want="2000-01-01 00:00:00"; //wantDate = Sat Jan 01 00:00:00 KST 2000
//String want="2000 01 01 00:00:00"; //[에러]형식에 맞지 않는 날짜와 시간입니다.
//5.
try {
//SimpleDateFormat.parse(String str): SimpleDateFormat 객체에 저장된 패턴정보 형식의 문자열을 매개변수로 전달받아 Date 객체로 변환하여 반환하는 메소드
// => SimpleDateFormat 객체에 저장된 패턴정보와 일치하지 않는 문자열을 매개변수에 전달한 경우 ParseException 발생
Date wantDate=dateFormat.parse(want); //String >> Date
System.out.println("wantDate = "+wantDate); //wantDate = Sat Jan 01 00:00:00 KST 2000
//6.
} catch (ParseException e) {
System.out.println("[에러]형식에 맞지 않는 날짜와 시간입니다.");
}
}
}
05. DayCalculateApp프로그램
package xyz.itwill.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//키보드로 생년월일을 입력받아 오늘까지 살아온 날짜(일)를 계산하여 출력하는 프로그램 작성
//ex) 생년월일 입력[ex.2000-01-01] >> 2022-10-05
// [결과]태어난지 1일이 지났습니다.
// => 형식에 맞지 않는 생년월일을 입력한 경우 에러 메세지 출력 후 프로그램 종료
public class DayCalculateApp {
public static void main(String[] args) {
//1.
Scanner scanner = new Scanner(System.in);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = null;
//2.
//키보드로 생년월일 입력받기
System.out.print("생년월일 입력[ex.2000-01-01] >> ");
//3.
try {
//키보드로 입력받은 문자열을 Date 객체로 변환하여 저장
//=> 키보드로 입력받은 문자열이 형식에 맞지 않을 경우 ParseException 발생 - 예외처리
//=> 일반예외이므로 반드시 예외처리해야 에러 미발생
//⭐문자열 -> Date객체로 만들어
birthday = dateFormat.parse(scanner.nextLine());
//throws 떠넘기기보다 try-catch쓰기
//4.
} catch(ParseException e) {
System.out.println("[에러]생년월일을 형식에 맞게 입력해 주세요. ");
System.exit(0);
//5.
} finally {
//예외가 발생하든 안하든 무조건 close()시켜줘야하므로 finally에 작성
scanner.close();
}
//6.
//⭐살아온 날짜를 계산하여 출력
long day = (System.currentTimeMillis() - birthday.getTime())/(1000*60*60*24);
System.out.println("[결과]태어난지 "+day+"일이 지났습니다.");
}
}
//생년월일 입력[ex.2000-01-01] >> 1998-05-25
//[결과]태어난지 8901일이 지났습니다.
//생년월일 입력[ex.2000-01-01] >> 2022-12-25
//[결과]태어난지 -78일이 지났습니다.
반응형
'java > java.util & java.text' 카테고리의 다른 글
[java.util] 6. HashSet 클래스 & ArrayList 클래스 & HashMap 클래스 (0) | 2024.06.27 |
---|---|
[java.util] 5. Collection(자료구조)클래스 기초 (0) | 2024.06.27 |
[java.util] 4. Generic VS Non-Generic (0) | 2024.06.27 |
[java.util] 2. Date 클래스 & Calendar 클래스 (0) | 2024.06.18 |
[java.util] 1. Random 클래스 & UUID 클래스 (0) | 2024.06.18 |