Notice
Recent Posts
Recent Comments
Link
YTCW
java.util package, calendar 본문
java.util 패키지
자바의 표준 라이브러리 중 하나
데이터의 구조, 시간과 날짜 처리, 무작위 숫자 생성 등의 기능을 포함
시간과 날짜 처리하는 클래스
Date 클래스
날짜와 시간을 표현
현재의 밀리초 단위까지를 반환
toString() : 현재 날짜와 시간을 문자열로 반환
getTime() : 현재의 밀리초 단위를 반환
Calendar 클래스
날짜와 시간을 처리하기 위한 추상 클래스
Date 클래스 보다 더 빠른 날짜 시간 계산을 젝ㅇ
getInstance() : 현재 날짜와 시간으로 설정된 Calendar 객체를 반환
get(int field) : 지정된 필드의 값을 반환
객체의 필드 값을 반환
set(int year, int month, int date) : 연, 월, 일을 설정
import java.util.Calendar;
public class CalendarExample {
public static void main(String[] args) {
// 현재 날짜와 시간 정보를 가져오는 Calendar 객체 생성
Calendar calendar = Calendar.getInstance();
// 1. ERA: 연대(BC/AD)
int era = calendar.get(Calendar.ERA);
String eraString = (era == Calendar.AD) ? "AD" : "BC";
// 2. YEAR: 연도
int year = calendar.get(Calendar.YEAR);
// 3. MONTH: 월 (0 = 1월, 11 = 12월)
int month = calendar.get(Calendar.MONTH) + 1; // 1월 = 0이므로 +1
// 4. WEEK_OF_YEAR: 연중 몇 번째 주
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
// 5. WEEK_OF_MONTH: 월 중 몇 번째 주
int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);
// 6. DATE / DAY_OF_MONTH: 월 중 몇 번째 날
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
// 7. DAY_OF_YEAR: 연중 몇 번째 날
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
// 8. DAY_OF_WEEK: 요일 (1 = 일요일, 7 = 토요일)
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
String[] days = { "N/A", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
String dayOfWeekStr = days[dayOfWeek];
// 9. DAY_OF_WEEK_IN_MONTH: 월 중 몇 번째 요일
int dayOfWeekInMonth = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
// 10. AM_PM: 오전/오후
int am_pm = calendar.get(Calendar.AM_PM);
String amPmStr = (am_pm == Calendar.AM) ? "AM" : "PM";
// 11. HOUR: 12시간 단위 시간 (0-11)
int hour = calendar.get(Calendar.HOUR);
// 12. HOUR_OF_DAY: 24시간 단위 시간 (0-23)
int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
// 13. MINUTE: 분 (0-59)
int minute = calendar.get(Calendar.MINUTE);
// 14. SECOND: 초 (0-59)
int second = calendar.get(Calendar.SECOND);
// 15. MILLISECOND: 밀리초 (0-999)
int millisecond = calendar.get(Calendar.MILLISECOND);
// 16. ZONE_OFFSET: 시간대 차이 (밀리초 단위, GMT와의 차이)
int zoneOffset = calendar.get(Calendar.ZONE_OFFSET) / (60 * 60 * 1000); // 시간 단위로 변환
// 17. DST_OFFSET: 서머타임 차이 (밀리초 단위)
int dstOffset = calendar.get(Calendar.DST_OFFSET) / (60 * 60 * 1000); // 시간 단위로 변환
// 18. EXTENDED_YEAR: 확장 연도
int extendedYear = calendar.get(Calendar.EXTENDED_YEAR);
// 19. JULIAN_DAY: 율리우스 일수
int julianDay = calendar.get(Calendar.JULIAN_DAY);
// 20. IS_LEAP_MONTH: 윤달 여부 (기본 달력에서는 적용되지 않음)
boolean isLeapMonth = (calendar.get(Calendar.IS_LEAP_MONTH) == 1);
// 출력
System.out.println("Calendar 정보:");
System.out.println("ERA (연대): " + eraString);
System.out.println("Year (연도): " + year);
System.out.println("Month (월): " + month);
System.out.println("Week of Year (연중 몇 번째 주): " + weekOfYear);
System.out.println("Week of Month (월 중 몇 번째 주): " + weekOfMonth);
System.out.println("Day of Month (월 중 몇 번째 날): " + dayOfMonth);
System.out.println("Day of Year (연중 몇 번째 날): " + dayOfYear);
System.out.println("Day of Week (요일): " + dayOfWeekStr);
System.out.println("Day of Week in Month (월 중 몇 번째 요일): " + dayOfWeekInMonth);
System.out.println("AM/PM (오전/오후): " + amPmStr);
System.out.println("Hour (12시간제): " + hour);
System.out.println("Hour of Day (24시간제): " + hourOfDay);
System.out.println("Minute (분): " + minute);
System.out.println("Second (초): " + second);
System.out.println("Millisecond (밀리초): " + millisecond);
System.out.println("Zone Offset (시간대 차이, GMT): " + zoneOffset + " hours");
System.out.println("DST Offset (서머타임 차이): " + dstOffset + " hours");
System.out.println("Extended Year (확장 연도): " + extendedYear);
System.out.println("Julian Day (율리우스 일수): " + julianDay);
System.out.println("Is Leap Month (윤달 여부): " + isLeapMonth);
}
}
// 생일까지 남은 일수 계산 프로그램
// 사용자로부터 생년월일을 입력받고
// 다가오는 생일까지 남은 일수를 반환
// 1. 사용자로부터 생년월일 입력받기
// 스캐너 >> 연도, 월, 일을 각각 입력받기
Scanner sc = new Scanner(System.in);
System.out.println("연도 : YYYY, 월 : MM, 일 : DD");
int birthYear = sc.nextInt(); // 연도
int birthMonth = sc.nextInt(); // 월
int birthDay = sc.nextInt(); // 일
// 현재 날짜와 시간을 포함하는 Calendar 인스턴스 생성
Calendar today = Calendar.getInstance();
// 사용자의 생일 설정(월은 0부터 시작하기 때문에 -1을 해야함)
Calendar birthday = Calendar.getInstance();
birthday.set(Calendar.YEAR, birthYear);
birthday.set(Calendar.MONTH, birthMonth -1);
birthday.set(Calendar.DAY_OF_MONTH, birthDay);
// 올해의 생일이 이미 지났는지 확인
if(birthday.before(today)) {
// 이미 지났다면 내년으로 설정
birthday.set(Calendar.YEAR, today.get(Calendar.YEAR) + 1);
}
long difference = (birthday.getTimeInMillis() - today.getTimeInMillis()) / (1000 * 60 * 60 * 24);
// 날짜 차이 계산 (밀리초 단위로 계산 후 일 단위로 변경)
// 1초 = 1000밀리초, 1분 = 60초, 1시간 = 60분, 1일 = 24시간
System.out.println("남은 생일은 : " + difference + "일");
'java' 카테고리의 다른 글
java ArrayList, LinkedList, List 차이점 (1) | 2024.09.10 |
---|---|
java collection (0) | 2024.09.10 |
java.lang (0) | 2024.09.09 |
java 예외처리, exception (3) | 2024.09.09 |
java 인터페이스, interface (0) | 2024.09.09 |