java.util 패키지
날짜 정보 제공해주는 API를 공부하자.
Date클래스와 Calendar클래스!!
ㅇDate 클래스 : 특정시점 날짜 표현
ㄴDate 객체 - 연도, 월, 일, 시간 정보
ㅇCalendar 클래스 : 달력을 표현
ㄴCalendar 객체 : 연도, 월, 일, 요일, 오전/오후, 시간 등
Date클래스
ㅡDate 객체 생성 : Date 변수 = new Date();
ㅡDate객체의 toString() 메소드: 영문으로 된 날짜정보를 리턴
ㄴ원하는 날짜형식으로 얻고 싶다면 java.text패키지를 이용하자 : SimpleDateFormat 클래스 이용
ㄴSimpleDataFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 hh시 mm분 ss초");
ㄴ이 형식 문자열에 포함되는 기호는 저렇게 정해져있다.
ㅡSimpleDateFormat 객체를 얻은 후.. format() 메소드를 호출해서 날짜 정보를 얻을 수 있다.
매개값으로는 Date객체가 들어간다. (이전에 Date now = new Date();로 Date객체 생성을 했었다.)
Calendar 클래스
ㄴ추상클래스이므로 new연산자를 통해 인스턴스 생성 불가
ㄴCalender클래스의 정적 메소드인 getInstance()메소드를 이용 -> Calendar 하위객체 얻을 수 있다.
(현 운영체제 설정 시간대를 기준으로 함)
ㄴCalendar now = Calendar.getInstance();
이렇게 Calendar 객체를 생성했다면, get메소드를 통해 날짜, 시간 정보를 읽을 수 있다.
get메소드의 매개값으로는 Calendar 클래스에 선언되어 있는 상수를 이용한다.
Calendar now = Calendar.getInstance(); int year = now.get(Calendar.YEAR); int month = now.get(Calendar.MONTH) + 1; int day = now.get(Calendar.DAY_OF_MONTH); int week = now.get(Calendar.DAY_OF_WEEK); int amPm = now.get(Calendar.AM_PM); //AM->0, PM->1 int hour = now.get(Calendar.HOUR); int minute = now.get(Calendar.MINUTE); int second = now.get(Calendar.SECOND); |
에휴 ㅠㅠ switch문에서 break 넣는거 왜 안해! 오늘 이후로 break의 필요성을 제대로 기억하도록 하자.
에효 바보 이래서 결과가 토요일로 나왔다. 오늘은 수요일(4)인데 5,6,7까지 쭈루룩 실행되어서 week = "토"가 실행되었다. -_- 오후도 마찬가지다. 저기도 break를 넣어줬어야지 ㅜ_ㅜ!! break를 잘 잘성하자.
++그리고 case에서 숫자리턴값을 직접 이용할 수도 있지만, <Calendar.해당요일>을 사용해도 된다.
다음과 같이..
switch(intWeek) {
case Calendar.MONDAY: 블라블라
.
.
}
.
.
if (intAmPm == Calendar.AM) { amPm = "오전";} else { amPm = "오후";}
이렇게 사용해도 된다는거!
++
Calendar.DAY_OF_WEEK 그냥 7의 값을 가진 상수일 뿐이다.
현재 요일 정보를 가지고 있는 Calendar 객체를 통해야 한다.
Calendar.get(DAY_OF_WEEK)따위로 사용해야 한다.
++
요일을 한글로 뽑아낼 때
한글 요일 배열을 따로 만들어서, int로 리턴하는 요일값을 인덱스로 사용해도 좋겠다.
ㅡㅡㅡㅡㅡㅡ
break를 넣어 수정한 결과!
예쁘게 실행이 되었다.
앞서 배운 바와 같이
Date, SimpleDateFormat 클래스를 이용해서 날짜 시간 정보를 출력할 수도 있고
Calendar 클래스를 이용해서 날짜 시간 정보 출력할 수도 있다.
위에서 Calendar 클래스로 혼자 날짜출력 해봤으니
Date와 SimpleDateFormat 클래스를 이용해서도 스스로 해보자아
Date클래스 관련 학습 (+ 복습)
▼더보기 클릭
아 Date클래스에서 다음 메소드들은 더이상 사용하지 않네...
동시에 Calendar 클래스를 이용한 대체방법도 설명되어있다.
신기방기
+
그냥 Date객체를 생성한 다음에
SimpleDateFormat 객체를 생성하면서 생성자를 통해 String 쓰려는 형식을 지정해주고
SimpleDateFormat 객체의 format()메소드 매개값으로 아까 생성한 Date객체 넣어주면 된다.
ㅇDate객체 생성
ㅇSimpleDateFormat 객체생성 + 형식작성
ㅇSimpleDateFormat객체.format(Date객체)를 참조하는 변수 생성
ㅇ그 변수를 print
이런 식으로!!
확인문제 풀러 슝슝
쓰다가 오류난 것 정리!!!!
▼더보기 클릭
이런식으로 쓰면 안되나보다.
++SimpleDateFormat, <Day name in week> Letter 사용법
>>영어로 설정했을때만 해당되는 것 같다.
>>나는 Day name in week를 사용해보면 한글결과로 나온다.
>>ㅠㅠ switch문으로 영문(weekENG)을 한글로(weekKOR) 바꿔주는 조건문을 작성했었는데 어쩐지 계속 weekKOR = null 이 나오더라.. print해서 확인해봤더니 "E"형식의 리턴이 '수' '목' '금' 이런 한글로 나오더라..
헤맸다ㅠㅠ
그리고 API문서 설명을 보면
그래서 "E", "EE", "EEE" 까지는 그냥 "수" "목" "금" 이런 약식으로 나오고
"EEEE"부터는 "수요일" 풀네임을 리턴한다.
어쩐지 이상하더라~_~
요 간단한걸 엄청 오래 걸려서 완성했다.
<몰랐던 것>
ㅇ예상과 다르게 SimpleDateFormat클래스에서 요일 리턴이 한글로 되었다.
이것 덕분에 여러 오류를 확인할 수 있었다.
'JAVA' 카테고리의 다른 글
[혼자 공부하는 자바] 7/30 12-2 [스레드 제어] [스레드 일시정지] [sleep()] [안전한 종료] [interrupt()] [InterruptedException] [주스레드] [데몬스레드] (0) | 2020.07.31 |
---|---|
[혼자 공부하는 자바] 7/29 12-1 [스레드] [멀티 스레드] [프로세스] [작업 스레드] [메인 스레드] [공유객체] [동기화메소드] (0) | 2020.07.29 |
HashMap이 뭘까\('o')/?? (0) | 2020.07.26 |
[JAVA] java.lang 패키지의 Math 클래스 (0) | 2020.07.26 |
[3주차] 기본미션 + 선택미션 [혼공단] [혼공자] (0) | 2020.07.26 |