본문 바로가기
Study/Java

09. <Calendar, DecialFormat, SimpleDateFormat> ~자바의 정석 summary ~

by 하구땡 2023. 1. 17.
반응형

1. Calendar 클래스

- 추상클래스 (객체 생성 불가능)

- Date클래스->Calendar클래스->java.time패키지

- 나라별로 사용하는 달력이 다르므로, 수정하기 쉽게 메서드를 이용한다.

ex)

Calendar cal = new GregorianCalendar();           => 권장 x

Calendar cal = calendar.getInstance();           => 권장

                                                       => 현재날짜와 시간으로 설정됨

- get(); : 현재 시스템의 날짜와 시간 출력

-set(); : 원하는 날짜와 시간으로 설정

*void set(int field, int value)

*void set(int year, int month, int date, int hourOfDay, int minute, int second)

YEAR
MONTH (0~11, 0:1월)
WEEK_OF_YEAR
WEEK_OF_MONTH
DATE = DAY_OF_MONTH
DAY_OF_YEAR
DAY_OF_WEEK(1~7, 1:일요일)
DAY_OF_WEEK_IN_MONTH
AM_PM (0:오전, 1:오후)
HOUR (0~11)
HOUR_OF_DAY (0~23)
MINUTE
SECOND
MILLISECOND(1000분의 1초, 0~999)
ZONE_OFFSET (-12~+12)
getActualMaximum(Calendar.DATE)

 [1] add(int field, int amount); - 지정한 필드의 값을 증가 또는 감소시킨다.

[2] roll(int field, int amount); - add와 같이 증가 또는 감소시키지만 지정한 필드 외에는 영향을 미치지 않는다. 다만, 일 필드(date)가 말일일 때 월 필드(month)를 변경하면 일 필드(date)에 영향을 준다.

 

ex) set(2022, 9, 1)

           add(Calendar.DATE, 31) - 10월 1일

           roll(Calendar.DATE, 31) - 9월 30일

 

           1.1 Date/Calendar 형변환

- Date대부분의 메서드가 ‘deprecated’되었지만 그럼에도 불구하고 Date를 필요로 하는 메서드들이 있으므로 형변환하여 사용한다.

[1] Calendar를 Date로 변환

           Calendar cal = Calendar.getInstance();

           ...

           Date d = new Date(cal.getTimeInMillis());

[2] Date를 Calendar로 변환

           Date d = new Date();

           ...

           Calendar cal = Calendar.getInstance();

           cal.setTime(d);

 

2. 형식화 클래스

           2.1 DecimalFormat(숫자 형식화)

- 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 출력 가능

1) 원하는 출력형식의 패턴을 작성하여 DecimalFormat인스턴스 생성

2) 출력하고자 하는 문자열로 format메서드 호출

 

ex)

double number = 1234567.89;

DecimalFormat df = new DecimalFormat(”#.#E0”);

String result = df.format(number);           // result = “1.2E6”

 

           2.2 SimpleDateFormat(날짜 데이터 형식화)

ex)

Date today = new Date();

SimpleDateFormat df = new SimpleDateFormat(”yyyy-mm-dd”);

String result = df.format(today);                      //result = “2022-11-19”

- SimpleDateFormat의 parse는 문자열 source를 날짜인스턴스로 변환해 준다.

- 날짜 형식을 변환할 때 지정된 형식과 입력된 형식이 일치하지 않을 경우 예외가 발생하므로 적절한 예외처리가 필요하다.

(try-catch블록 활용)- 추상클래스 (객체 생성 불가능)

 

 

 

반응형

댓글