날짜 형식
Date
밀리초 단위로 현재시간을 나타내는 클래스
예전에 많이 쓰였지만 대부분의 기능이 중요도가 떨어져 주로 사용되지 않는다.
import 필요
ex)
Date date = new Date(); //현재시간 (요일, 월, 일, 시간 KST(한국표준시), 년도)
Date date2 = new Date(100, 7, 14); //특정날짜의 월, 요일 (년도(1900+), 월(1+), 일(0+))
System.out.println(date);
System.out.println(date.getDay()); //요일 0 ~ 6 (일 ~ 토)
System.out.println(date.getHours());
System.out.println(date.getMinutes());
System.out.println(date.getSeconds());
System.out.println(date2);
[실행결과]
Wed Jul 14 11:58:33 KST 2021
Mon Aug 14 00:00:00 KST 2000
3
11
58
33
예제 1.
<남은 시간 계산>
- 올해 크리스마스까지 며칠 남았는지 계산하고 몇요일인지 출력하기
Date date = new Date(); //현재 시간
Date xMas = new Date(121, 11, 25); //올해 크리스마스
System.out.println(date.getTime()); //date까지의 유닉스 시간
System.out.println(xMas.getTime()); //xMas까지의 유닉스 시간
long xMasT = xMas.getTime() - date.getTime(); //올해 크리스마스까지의 시간 - 현재시간
System.out.println(xMasT);
long result = xMasT / (1000 * 60 * 60 * 24); //밀리세컨드를 일로 바꾸기 ( / (초 * 분 * 시 * 일))
System.out.println("이번 크리스마스까지 " + result + "일 남았습니다.");
int day = xMas.getDay();
switch (day) {
case 0:
System.out.println("일요일 입니다.");
break;
case 1:
System.out.println("월요일 입니다.");
break;
case 2:
System.out.println("화요일 입니다.");
break;
case 3:
System.out.println("수요일 입니다.");
break;
case 4:
System.out.println("목요일 입니다.");
break;
case 5:
System.out.println("금요일 입니다.");
break;
default:
System.out.println("토요일 입니다.");
break;
}
- getTime( ) : 생성된 Date객체의 유닉스 시간을 가져오는 메소드
반환값 : 밀리초(ms) - 유닉스 시간 :
1970년 1월 1일 00:00:00 협정세계시(UTC)로부터의 경과 시간을 초로 환산하여 정수로 나타낸 것
[실행결과]
1626232081987
1640358000000
14125918013
이번 크리스마스까지 163일 남았습니다.
토요일 입니다.
Calendar
달력 조작을 위한 메서드를 담은 추상 클래스
Calendar에 있는 메소드를 사용하기 위해서는 getInstance( ) 를 사용해야 한다.
import 필요
ex)
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(cal); //cal 의 속성
System.out.println(date); //현재 시간
System.out.println(cal.get(Calendar.YEAR)); //년
System.out.println(cal.get(Calendar.MONTH) + 1); //월 (월만 0부터 시작)
System.out.println(cal.get(Calendar.DATE)); //일
System.out.println(cal.get(Calendar.HOUR)); //시
System.out.println(cal.get(Calendar.MINUTE)); //분
System.out.println(cal.get(Calendar.SECOND)); //초
System.out.println("================");
System.out.println(cal.get(Calendar.DAY_OF_WEEK)); //요일 (일요일부터 1로 시작)
System.out.println(cal.get(Calendar.AM_PM)); //오전, 오후 (0, 1)
System.out.println(cal.get(Calendar.HOUR_OF_DAY)); //24시간 표기
System.out.println(cal.getActualMaximum(Calendar.DATE)); //이번 달의 마지막 날짜
System.out.println(cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)); //이번 달의 몇번째 같은 요일인가
long longTime = cal.getTimeInMillis(); //밀리세컨드로 계산한 cal 까지의 유닉스 시간
System.out.println(longTime);
[실행결과]
java.util.GregorianCalendar[time=1626187455212,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=194,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=44,SECOND=15,MILLISECOND=212,ZONE_OFFSET=32400000,DST_OFFSET=0]
Tue Jul 13 23:44:15 KST 2021
2021
7
13
11
44
15
================
3
1
23
31
2
1626187455212
예제 1.
<나이 계산>
- 출생년도 입력
- 나이 = 현재 년도 - 입력받은 년도 + 1
Calendar cal = Calendar.getInstance();
Scanner sc = new Scanner(System.in);
System.out.println("출생 년도를 입력해주세요.");
int input = sc.nextInt();
int result = cal.get(Calendar.YEAR) - input + 1;
System.out.println("당신의 나이는 " + result + "살 입니다.");
sc.close();
[실행결과]
출생 년도를 입력해주세요.
1995
당신의 나이는 27살 입니다.
예제 2.
<현재시간 출력>
- 현재 시간을 출력하는 프로그램
- 출력 예시 : 2021년 1월 1일 금요일 오전 11시 11분 11초 입니다.
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int date = cal.get(Calendar.DATE);
int day_of_week = cal.get(Calendar.DAY_OF_WEEK);
int am_pm = cal.get(Calendar.AM_PM);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
String weekstr = "";
switch (day_of_week) {
case 1:
weekstr = "일";
break;
case 2:
weekstr = "월";
break;
case 3:
weekstr = "화";
break;
case 4:
weekstr = "수";
break;
case 5:
weekstr = "목";
break;
case 6:
weekstr = "금";
break;
default:
weekstr = "토";
break;
}
String am_pmstr = am_pm == 0 ? "오전" : "오후";
System.out.println(year + "년 " + month + "월 " + date + "일 " + weekstr + "요일 "
+ am_pmstr + hour + "시 " + minute + "분 " + second + "초 입니다.");
[실행결과]
2021년 7월 14일 수요일 오전1시 8분 59초 입니다.
SimpleDateFormat
Date 클래스에서 정의한 객체를 자신이 원하는 방식으로 출력을 할 수 있게 해주는 클래스
필요한 부분만을 가져올 수 있기 때문에 매우 편리하게 사용할 수 있다.
import 필요
날짜 표현방식 표 :
출처 : https://bvc12.tistory.com/168
ex)
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 E요일 a hh시 mm분 ss초 ");
System.out.println(sdf);
System.out.println(sdf.format(date));
[실행결과]
java.text.SimpleDateFormat@95fa6916
2021년 07월 14일 수요일 오전 12시 07분 33초
'JAVA' 카테고리의 다른 글
MessageFormat (0) | 2021.07.14 |
---|---|
currentTimeMillis (0) | 2021.07.14 |
동적 가변 배열 (DynamicArray) (0) | 2021.07.13 |
배열 복사 (ArrayCopy) (0) | 2021.07.13 |
isDigit (0) | 2021.07.11 |