백엔드/Java의 정석

TIL 정리_16

ran4 2022. 3. 3. 23:40

 

java.util.Date;

날짜와 시간을 다룰 목적으로 만들어진 클래스

Date의 메서드는 거의 deprecated(앞으로 사용하지 않음)됐지만, 여전히 쓰이고 있다

 

java.util.Calendar;

Date 클래스를 개선한 새로운 클래스 여전히 단점이 존재한다

 

java.time 패키지

DateCalendar의 단점을 개선한 새로운 클래스들을 제공한다 (JDK1.8)

 

Calendar 클래스

추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다

Calendar cal = Calendar.getInstance(); //추상클래스인 Calendar는 인스턴스를 생성x 

 

get()으로 날짜와 시간 필드 가져오기 : int get(int field)

int thisYear = cal.get(Calendar.YEAR); //올해가 몇 년인지

int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); //이 달의 마지막날

**get으로 얻어오는 값의 범위는 0부터 시작한다

 

Date와 Calendar간의 변환

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)

 

getTimeInMillis() : 1/1000초 단위로 값을 반환

 

set()으로 날짜와 시간 지정하기

void set(int field, int value)

 

clear()Calendar객체의 모든 필드를 초기화

Calendar dt = Calendar.getInstance(); //현재시간

System.out.println(new Date(dt.getTimeInMillis()));

dt.clear(); //초기화

System.out.println(new Date(dt.getTimeInMillis()));

**clear(int field)는 Calendar객체의 특정 필드를 초기화

 

add()는 특정 필드의 값을 증가 또는 감소(다른 필드에 영향있음)

date.add(Calendar.DATE,+1);

date.add(Calendar.MONTH, -8);

 

roll()은 특정 필드의 값을 증가 또는 감소(다른 필드에 영향X)

date.roll(Calendar.DATE, 1);

date.roll(Calendar.MONTH, -8); //자주 사용하진 않는다

 

날짜계산을 위한 몇 가지 메서드

boolean isLeapYear(int year) 매개변수 year가 윤년이면 true 아니면 false
int dayDiff(int y1, int m1, int d1, int y2, int m2, int d2) 두 날짜간의 차이를 일 단위로 변환
int getDayOfWeek(int year, int month, int day) 지정한 날짜의 요일을 반환
String convertDayToDate(int day) 일 단위의 값을 년월일의 형태의 문자열로 변환 후 반환
int convertDateToDay(int year, int month, int day) 년월일을 입력받아 일단위로 변환 

 

형식화 클래스

java.text 패키지에 포함되어 있으며, 숫자 날짜 텍스트 데이터를 일정한 형식에 맞게

표현할 수 있는 방법을 객체지향적으로 설계하여 표준화하였다.

 

DecimalFormat

숫자를 형식화 하는데 사용된다

특정 형식의 문자열을 숫자로 변환할때도 사용한다

 

숫자와 날짜를 원하는 형식으로 쉽게 출력 가능(숫자, 날짜 -> 형식 문자열)

double number = 1234567.89;

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

String result = df.format(number);

형식 문자열에서 숫자와 날짜를 뽑아내는 기능(형식 문자열 -> 숫자, 날짜)

DecimalFormat df = new DecimalFormat(“#,###.##”);

Number num = df.parse(“1,234,567.89”);

double d = num.doubleValue();

 

**Number클래스는 모든 숫자 래퍼 클래스의 최고 조상이다

 

SimpleDateFormat

날짜와 시간을 다양한 형식으로 출력할 수 있게 해준다

Date today = new Date();

SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd”);

String result = df.fomat(today);

 

특정 형식으로 되어있는 문자열에서 날짜와 시간을 뽑아낼 수 있다

DateFormat df = new SimpleDateFormat();

DateFormat df2 = new SimpleDateFormat();

Date d = df.parse(“”);

String result = df2.format(d);

 

parse(String resource)

문자열 source를 날짜 Date인스턴스로 변환해주기 때문에 유용하게 사용할 수 있다

지정된 패턴으로 입력되지 않을경우 예외가 발생하기 때문에 적절한 예외처리가 필요하다

 

ChoiceFormat

특정 범위에 속하는 값을 문자열로 반환한다

limits : 범위의 경계값을 저장한다

grades : 범위에 포함된 값을 치환할 문자열을 저장하는데 사용된다

경계값은 double형으로 오름차순으로 정렬되어 있어야 한다

 

MessageFormat

데이터를 정해진 양식에 맞게 출력할 수 있게한다

다수의 데이터를 같은 양식으로 출력할 때 사용한다

 

'백엔드 > Java의 정석' 카테고리의 다른 글

TIL 정리_18  (0) 2022.03.05
TIL 정리_17  (0) 2022.03.04
TIL 정리_15  (0) 2022.03.02
TIL 정리_14  (0) 2022.03.01
TIL 정리_13  (0) 2022.02.28