728x90
자바의 날짜시간 자료형
- Date 클래스 > JDK 1.0
- Calendar 클래스 > JDK 1.1 > 가장 대중화
- LocalDateTime, LocalDate, LocalTime 클래스 > JDK 1.8
시각 or 시간
- 시각 + 시각 = X
- 시각 - 시각 = O
- 시각 - 시간 = 시간
- 시간 + 시간 = O
- 시간 - 시간 = O
- 시각 + 시간 = O
- 시각 - 시간 = O
- 시각 + 시간 = 시각
명령어 정리
- 현재 시각 만들기 > Calendar.getInstance()
- 특정 파트 읽기 > c1.get(상수)
- 특정 시각 만들기(수정하기) > c1.set(상수, 값)
- 시각 + 시간 = 시각 > c1.add(상수, 값)
- 시각 - 시간 = 시각 > c1.add(상수, -값)
- 시각 - 시각 = 시간 > getTimeInMillis()
- 시간 + 시간 = 시간 > 산술연산
- 시간 - 시간 = 시간 > 산술연산
예제 1) 현재 시각을 생성해서 date라는 변수에 담아라
- 소스코드
Date date = new Date();
System.out.println(date);
예제 2) 현재 컴퓨터 시계의 시각을 얻어온다.
- 소스코드
Calendar c1 = Calendar.getInstance();
System.out.println(c1);
System.out.println(c1.get(1)); //년도 추출 > 2023
System.out.println(c1.get(2)); //1
System.out.println(c1.get(3)); //6
System.out.println(c1.get(4)); //2
System.out.println(c1.get(5)); //7
int year = 1;
System.out.println(c1.get(1)); //가독성이 낮음
System.out.println(c1.get(year)); //가독성이 높음
System.out.println(c1.get(Calendar.YEAR)); //가독성이 높음(실제 사용하는 구문)
System.out.println(c1.get(Calendar.YEAR)); //2023 > 년도
System.out.println(c1.get(Calendar.MONTH)); //1 > 월(0~11)
System.out.println(c1.get(Calendar.DATE)); //7 > 일(1~31)
System.out.println(c1.get(Calendar.HOUR)); //5 > 시(12H)
System.out.println(c1.get(Calendar.MINUTE)); //37 > 분
System.out.println(c1.get(Calendar.SECOND)); //38 > 초
System.out.println(c1.get(Calendar.MILLISECOND)); //755 > 밀리초
System.out.println(c1.get(Calendar.AM_PM)); //1 > 오전(0), 오후(1)
System.out.println(c1.get(Calendar.DAY_OF_YEAR)); //38 > 올해들어서 몇일 째인
System.out.println(c1.get(Calendar.DAY_OF_MONTH)); //7 > 이번달 들어서 몇일이 지났나
System.out.println(c1.get(Calendar.DAY_OF_WEEK)); //3 > 이번주 들어서 몇요일인지 일(1)~토(7)
System.out.println(c1.get(Calendar.WEEK_OF_YEAR)); //6 > 이번년도 몇째주 인지
System.out.println(c1.get(Calendar.WEEK_OF_MONTH)); //2 > 이번달 들어서 몇째주인지
System.out.println(c1.get(Calendar.HOUR_OF_DAY)); //17 > 오늘 들어서 몇시간 째인지 (24시간)
예제 3) 요구사항] "오늘은 2023년 02월 07일입니다."
- 소스코드
Calendar now = Calendar.getInstance();
System.out.printf("오늘은 %d년 %02d월 %02d일입니다.\n",
now.get(Calendar.YEAR),
now.get(Calendar.MONTH)+1,
now.get(Calendar.DATE));
예제 4) 요구사항] "지금은 오전 9시 12분 53초입니다." //24H
- 소스코드
System.out.printf("지금은 %02d시 %02d분 %02d초입니다. \n"
,now.get(Calendar.HOUR)
,now.get(Calendar.MINUTE)
,now.get(Calendar.SECOND));
예제 5) 다양한 예제 모음
public static void m3() {
//- int get(int) 읽기
//- void set(int, int) 쓰기
//현재 시각 만들기
Calendar now = Calendar.getInstance();
//특정 시각 만들기 > 원하는 날짜(2023-07-12)
//1. 현재 시각 만들기
//2. 원하는 시각으로 수정하기
Calendar endDate = Calendar.getInstance();
//endDate.set(Calendar.YEAR, 1995);
endDate.set(Calendar.MONTH, 6);
endDate.set(Calendar.DATE, 12);
endDate.set(Calendar.HOUR_OF_DAY, 18);
endDate.set(Calendar.MINUTE, 0);
endDate.set(Calendar.SECOND, 0);
//%tA = 해당하는 날짜의 요일을 출력
//%tF = 해당하는 날짜를 출력
//%tT = 해당하는 시간초를 출력
System.out.printf("%tF %tA\n %tT\n", endDate, endDate, endDate);
Calendar birthday = Calendar.getInstance();
birthday.set(1995, 5, 3);
System.out.printf("%tF\n", birthday);
}//m3
public static void m4() {
//연산
//- 시각 + 시간
//- 시각 - 시간
//오늘 만난 커플 > 100일
Calendar now = Calendar.getInstance();
System.out.printf("1일차: %tF\n", now);
now.add(Calendar.DATE, 100); //수정 > now는 더이상 현재 시각이 아니다.
//now.add(Calendar.YEAR, 10);
//now.add(Calendar.MONTH, 3);
System.out.printf("1일차: %tF\n", now);
//생일 + 100 > 백일잔치
Calendar birthday = Calendar.getInstance();
birthday.set(1995, 6, 10);
birthday.add(Calendar.DATE, 100);
System.out.printf("백일잔치 : %tF\n", birthday );
//12일전?
now = Calendar.getInstance(); //현재 시각 초기화
now.add(Calendar.DATE, -12);;
System.out.printf("오늘부터 12일 전은 %tF 입니다.\n" , now);
//3시간 17분뒤 복용
now = Calendar.getInstance();
now.add(Calendar.HOUR, 3);
now.add(Calendar.MINUTE, 17);
System.out.printf("영양제 복용시간 : %tT\n", now);
}//m4
public static void m5() {
//연산
//- 시각 - 시각
//내가 살아온 시간?
Calendar now = Calendar.getInstance();
Calendar birthday = Calendar.getInstance();
birthday.set(1998, 8, 22, 12, 30, 0);
//년 월 일 시 분 초
//now - birthday = 내가 살아온 시간
//불가능 : System.out.println(now - birthday);
//지정한 시간까지 몇초가 흘렀는지 보여줌.
System.out.println(birthday.getTimeInMillis());
System.out.println(now.getTimeInMillis());
System.out.println((now.getTimeInMillis() - birthday.getTimeInMillis())/1000/60/60/24);
//올해 크리스마스가 며칠 남았는지?
//수료일까지 며칠?
Calendar endDate = Calendar.getInstance();
endDate.set(2023, 6, 12);
long span = endDate.getTimeInMillis() - now.getTimeInMillis();
System.out.printf("수료일까지 %d일 남았습니다. \n", span /1000 / 60/ 60/ 24);
}//m5
public static void m6() {
//시각 > Calendar
//시간 > int
//요구사항] 2시간 30분 + 10분
//잘못된 예
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.HOUR, 2);
c1.set(Calendar.MINUTE, 30);
System.out.printf("%tF %tT\n",c1, c1);
//잘된 예
int hour = 2;
int min = 30;
min += 10;
System.out.printf("%d시간 %d분\n", hour, min);
//요구사항 2] 2시간 30분 + 40분 = 2시간 70분 = 3시간 10분
hour = 2;
min = 30;
min += 40; //70 > 60 나누기 > 몫(1) 나머지(10)
hour = hour + (min / 60);
min = min % 60;
System.out.printf("%d시간 %d분\n", hour, min);
}
728x90
'자바' 카테고리의 다른 글
JAVA STEP 16. DateTime&if&switch 예제 모음 (0) | 2023.02.08 |
---|---|
JAVA STEP 15. if&switch (0) | 2023.02.08 |
JAVA STEP 13. Method 예제 모음 (0) | 2023.02.07 |
JAVA STEP 12. LocalVariable & Method Overloading (0) | 2023.02.07 |
JAVA STEP 11. Method (0) | 2023.02.07 |