일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- java
- 예외처리
- Connection
- Annotaion
- JDBC
- Oracle
- array
- 상속
- set
- 8bit
- where
- 자바
- 난수
- 다이얼로그
- 오라클
- Reader
- transient
- 16bit
- 조회
- Join
- Serializable
- stream
- InputStream
- DB연동
- swing
- driver
- Transaction
- select
- statement
- DB
- Today
- Total
오버플로
[Java] Calendar Class / VO Class 본문
1. Calendar Class
- 하나의 날짜 정보를 얻을 때 (Ex. 년도, 시간, 분 등 ..)
(형식있는 날짜를 Calendar로 구하면 문장이 길어짐! 형식있는 날짜는 Date/SimpleDateFormat으로 구하자)
- java.util package에서 제공
- abstract class이므로 객체화가 되지 않음 (자식 클래스가 객체화되면 객체로 생성됨)
=> 자식클래스 : GregorianCalendar
- 생성: 1) 자식 클래스를 통해 생성 (is a 관계의 객체화)
Calendar cal = new GregorianCalendar();
2) method를 이용한 생성 (권장)
: Calendar의 instance를 얻는 method를 사용하여 객체를 얻을 수 있음
Calendar cal1 = Calendar.getInstance();
- 일: 1) 정보를 얻을 때에는 Calendar.get method의 Calendar.Constant를 넣어서 얻음
- 년 구하기 : int year = cal.get(Calendar.YEAR);
- 월 구하기 : = cal.get(Calendar.MONTH)+1; // 월은 0~11월. 12달이 나옴.
- 일 구하기 : = cal.get(Calendar.DAY_OF_MONTH); // DAY_OF_YEAR은 년기준 day
- 요일 구하기 : = cal.get(Calendar.DAY_OF_WEEK) // 일~토 (1~7)
- 시간 구하기 : HOUR (12시간) / HOUR_OF_DAY (24시간)
- 분 구하기 : MINUTE
- 초 구하기 : SECOND
**String의 split method 사용하면 용이함!**
- 기준 문자열로 구분하여 배열로 만들어 반환하는 일
- 문법) String[] 배열명 = "문자열".split(“구분문자열”)
Ex.) String[] week = "일요일,월요일,화요일,수요일,목요일,금요일,토요일".split(","); //,를 구분문자열로 배열 생성
**Calendar에서 다른 날짜 정보 얻기!**
- Calendar가 생성되면 생성된 시점의 현재 날짜가 할당됨
- set method를 활용하자 ! : cal.set(int field, int value)
> field : 변경하고 싶은 날짜 정보 상수
> value : 값
주의) 현재 월에 존재하지 않는 일이 설정되면 자동으로 다음달 1일 + 초과일수로 변경 됨
2. VO (Value Object) Class
- 값을 저장하고 전달할 목적으로 만드는 Class
- 인스턴스 변수/기본 생성자/인자 있는 생성자/getter와 setter method가 존재하는 클래스
(프레임웍 사용하면 getter/setter method만 넣게 됨)
- method의 매개변수가 여러개일 때 클래스로 묶어서 처리하는 방법
# 오늘의 코딩 #
-VO Class와 Calendar Class를 활용해보자
#먼저 VO Class 작성 (년,월,일을 저장하는 Class)
package test;
/**
* VO (Value Object) : 값을 저장하고 전달할 목적으로 만드는 클래스
* @author user
*/
public class CalendarVO {
private int year, month, day;
public CalendarVO {
}//CalendarVO
public CalendarVO(int year, int month, int day) { // 매개변수를 입력받는 생성자
this.year = year;
this.month = month;
this.day = day;
}//CalendarVO
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
}// class
# Calendar Class에서 VO Class를 매개변수로 받아보았다
package test;
import java.util.Calendar;
/**
* Calnedar Class와 VO Class 활용<br>
* @author user
*/
public class UseCalendar {
/**
* "년월일"을 정수로 가진 클래스를 매개변수로 받아 요일을 반환하는 method<br>
* @param calendarVO 년,월,일을 묶어서 관리하는 클래스
* @return 요일
*/
public String weekTitle(CalendarVO calendarVO) {
String resultWeek = "";
Calendar cal = Calendar.getInstance(); // 현재 날짜
// 입력한 값으로 변환된 날짜
cal.set(Calendar.YEAR, calendarVO.getYear());
cal.set(Calendar.MONTH, calendarVO.getMonth() - 1); // 사람이 사용하는 월보다 1 적게 설정
cal.set(Calendar.DAY_OF_MONTH, calendarVO.getDay());
resultWeek = "일,월,화,수,목,금,토".split(",")[cal.get(Calendar.DAY_OF_WEEK) - 1];
return resultWeek;
}// weekTitle
public static void main(String[] args) {
UseCalendar week = new UseCalendar();
System.out.println(week.weekTitle(new CalendarVO(2021, 8, 31)));
}// main
}// class
- String 배열을 생성하여 하나씩 값을 넣는것보다 String.split을 이용한다면 수고로움을 덜 수 있다!
# 출력 결과 #
화
'Java' 카테고리의 다른 글
[Java] import / static import (0) | 2021.08.05 |
---|---|
[Java] Calendar Class(2) (0) | 2021.08.03 |
[Java] Date Class / SimpleDateFormat Class / Locale Class (0) | 2021.08.01 |
[Java] StringTokenizer (0) | 2021.07.30 |
[Java] Math Class (0) | 2021.07.29 |