반응형
본 포스팅은 프로그래머스 자바 중급 강의에 기반하여 작성되었습니다.
자바 강의의 모든 내용이 적힌것이 아닌 복습시 놓쳤던 부분을 하나하나 정리한 내용입니다.
순서 Date, Calendar, java.time패키지
Date
날짜와 시간을 구하기 위한 클래스 Date 클래스
- Date클래스는 JDK 1.0때 만들어졌고, Calendar클래스는 JDK1.1에 만들어졌다.
- Date는 지역화에 대한 부분이 고려되지 않았다.
- 지역화란, 지역에 따라서 시간, 통화(원, 달러, 엔 등) 언어등에 대하여 고려하는 프로그래밍을 지역화에 맞춘 프로그래밍이라고 합니다.
- Date클래스를 보면 대부분의 생성자와 메소드가 Deprecated되어 있다.
- Deprecated된 것은 앞으로 지원을 안하거나 문제가 있을 수 있으니 사용하지 말라는 뜻입니다.
- 기본 생성자를 이용한 Date클래스 생성
- 기본 생성자로 Date인스턴스를 만들게 되면 현재 시간과 날짜 정보를 Date인스턴스가 가지게 됩니다.
Date date = new Date();
- toString()메소드를 이용하여 현재 시간을 문자열로 구합니다.
- 출력 결과 : Wed Jan 06 18:36:56 KST 2016
System.out.println(date.toString());
- java.util.SimpleDateFormat 클래스를 이용해서 원하는 형태로 출력하는 방법
- yyyy는 년, MM은 월, dd는 일을 표현한다.
- hh는 시간, mm은 분, ss는 초를 표현하며 a는 오전/오후 를 표현한다.
- zzz는 TimeZone을 나타낸다. 한국의 경우 한국표준시 KST가 TimeZone에 해당하는 값입니다.
SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd 'at' hh:mm:ss a zzz");
System.out.println(ft.format(date));
- 현재 시간을 Long값으로 구하는 방법
- System.currentTimeMillis()메소드
System.out.println(date.getTime()); // System이 가지고 있는 currentTimeMillis()메소드를 이용해도 됩니다.
long today = System.currentTimeMillis();
System.out.println(today);
Calendar
Date의 단점을 해결하고 등장한 것이 Calendar클래스
- Calendar 클래스 생생 방법
- Calendar클래스는 추상클래스이다.
- Calendar클래스에 대한 인스턴스를 생성하려면 Calendar가 가지고 있는 클래스 메소드 getInstnace()를 사용해야 한다.
- getInstance()메소드를 호출하면 내부적으로 java.util.GregorianCalendar 인스턴스를 만들어서리턴한다.
- GregorianCalendar는 Calendar의 자식 클래스이다. 새로운 형식의 표준 달력이 생길 때를 대비하여 상속받음
Calendar cal = Calendar.getInstance();
- Calendar 클래스를 이용해서 현재 날짜와 시간에 대한 정보를 알아내는 방법
- Calendar는 현재 날짜와 시간에 대한 정보를 가집니다.
- Calendar가 가지고 있는 get메소드에 Calendar의 상수를 어떤 것을 넣어주느냐에 따라서 다른 값이 나온다.
int yyyy = cal.get(Calendar.YEAR); // 해당연도
int month = cal.get(Calendar.MONTH) + 1; // 월은 0부터 시작합니다. 월(0~11)
int date = cal.get(Calendar.DATE); // 일
int hour = cal.get(Calendar.HOUR_OF_DAY); // 시간 (0~23), HOUR는 (0~11)
int minute = cal.get(Calendar.MINUTE); // 분 (0~59)
- Calendar 클래스를 이용해서 원하는 날짜나 시간에 대한 정보 얻어오는 방법
- Calendar가 가지고 있는 add(int field, int amount)를 이용하면 다음 날짜나 이전 날짜를 구할 수 있습니다.
- 현재 칼랜더에 시간을 5시간 더하는 방법. 5를 -5로 수정하면 5시가 전을 구할 수 있게 됩니다.(양수, 음수 다됨)
cal.add(Calendar.HOUR, 5);
메소드들을 이용하여 원하는 시간으로 바꿀 수 있다. Calendar 메소드와 상수 사용한 예제들을
국비지원 교육 day - 18의 정리내용을 보자
java.time 패키지
Java에서 제공하는 Date, Time API는 부족한 기능 지원을 포함한 여러가지 문제점을 가지고 있었다.
- 문제점 : Date는 1900년도 부터만 시작한다던가 월이 0부터 시작하는 등 직관적이지 않다.
Joda-Time라는 자바의 Date와 Time을 대신 할 수 있는 클래스를 제공하는 라이브러리를 사용하기도 했었다.
JDK 코어에서 이런 문제점들을 해결하고 더 좋고 직관적인 API들을 제공하기 위해 새롭게 재 디자인한
Date, Time API를 Java SE 8부터 제공한다.
- 새로운 API의 핵심 클래스는 오브젝트를 생성하기 위해 다양한 factory 메서드를 사용한다.
- 오브젝트 자기 자신의 특정 요소를 가지고 오브젝트를 생성할 경우 of 메서드를 호출하면 되고, 다른 타입으로 변경할 경우에는 from 메서드를 호출하면 된다.
- LocalDateTime 클래스를 이용해서 현재 시간 time객체 만드는 방법
- now는 현재 시간을 구한다.
LocalDateTime timePoint = LocalDateTime.now(); // 현재의 날짜와 시간
System.out.println(timePoint);
- 원하는 시간으로 time객체 생성하는 방법
// 2012년 12월 12일의 시간에 대한 정보를 가지는 LocalDate객체를 만드는 방법
LocalDate ld1 = LocalDate.of(2012, Month.DECEMBER, 12); // 2012-12-12 from values
// 17시 18분에 대한 LocalTime객체를 구한다.
LocalTime lt1 = LocalTime.of(17, 18); // 17:18 (17시 18분)the train I took home today
// 10시 15분 30초라는 문자열에 대한 LocalTime객체를 구한다.
LocalTime lt2 = LocalTime.parse("10:15:30"); // From a String
- 현재와 날짜와 시간정보를 getter메소드를 이용하여 구하는 방법
LocalDate theDate = timePoint.toLocalDate();
Month month = timePoint.getMonth();
int day = timePoint.getDayOfMonth();
int hour = timePoint.getHour();
int minute = timePoint.getMinute();
int second = timePoint.getSecond();
// 달을 숫자로 출력한다 1월도 1부터 시작하는 것을 알 수 있습니다.
System.out.println(month.getValue() + "/" + day + " " + hour + ":" + minute + ":" + second);
메소드의 사용법과 예제는 국비지원 수업을 참고하자
반응형
'프로그래밍 공부 > JAVA' 카테고리의 다른 글
JAVA중급강의 정리 어노테이션, 쓰레드 (0) | 2021.08.27 |
---|---|
JAVA 중급강의 정리 자바IO 입력과 출력 (0) | 2021.08.18 |
JAVA 중급 강의정리 java.util 패키지, Generic, 컬렉션 프레임워크 (0) | 2021.08.10 |
JAVA 중급 강의정리 Object클래스 ~ java.lang 패키지 (0) | 2021.08.10 |
JAVA 입문 강의정리 예외 Exception, throws (0) | 2021.07.25 |