java.time(자바 시간 관련 패키지와 클래스)
package:java.util
class:Calender class
Calender class
- statinc Calendar getlnstance()
- Calendar 객체생성
- 달력체계가 다른 국가가 있으므로
- locale 정보를 가지고 결정
- (java.util.Locale)
- get(필드 상수)→날짜,시간조회
- set(필드 상수,값)→날짜 시간 변경
- add(필드 상수,값)→날짜 시간 가감(필드에의 값이 넘어서면 자동으로 월년도가 변경)
- roll(필드 상수,값)→날짜,시간을 가감(필드에 해당하는 항목이 계속반복)
add(int feeld,int value)
roll(int field ,boolean up)
package eaxm01; import java.util.Calendar; import static java.util.Calendar.*; // Calendar.year->year제거해서 쓸수 있다? public class ex02 { public static void main(String[] args) { //Calendar cal = new Calendar(); 이런식으로는 만들수 없다 Calendar cal = Calendar.getInstance(); System.out.println(cal); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH); int day = cal.get(Calendar.DAY_OF_YEAR); //java.util.Calendar; int hours = cal.get(HOUR); int min = cal.get(MINUTE); int sec = cal.get(SECOND); //static java.util.Calendar; System.out.printf("year=%d,month=%d,day=%d,h=%d,m=%d,s=%d%n",year,month,day,hours,min,sec); } }
📤year=2023,month=3,day=92,h=2,m=34,s=56cal.set(2023,10,1,12,13,40);//원하는 시간대로 설정할수 있다
📤year=2023,month=10,day=305,h=0,m=13,s=40//cal.add(DAY_OF_MONTH,365);//양수 ->날짜,시간 추가 //cal.add(DAY_OF_MONTH,-365);//음수 ->날짜,시간 추가
package eaxm01; import java.time.Year; import java.util.Calendar; public class ex03 { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH,40); int year = cal.get(Calendar.YEAR); int month=cal.get(Calendar.MONTH)+1; int day=cal.get(Calendar.DAY_OF_MONTH); System.out.printf("year=%d,month=%d,day=%d%n",year,month,day); } }
📤year=2023,month=5,day=12
- 문제점
- month→체계0~11: 혼동의 가능성
- 날짜 시간 변경시-원객체가 변경되는 문제점
- ㅓjava.time패키지 날짜,시간 변경시 새로운 인스턴스 생성반환
- 상수 필드의 체계가 매우 부족
- 메서드가 직관적X
- ADD가 날짜 추가,감소 다 담당
- Calendar 객체생성
- java.time.format: 날짜,시간의 형식화
- java.time.temporal
- 날짜,시간 필드상수
- (temporalField인터페이스→chronoField(Enum상수))
- 날짜,시간 단위
- temporalUnit 인터페이스→chronoUnit(Enum상수)
- 날짜,시간 필드상수
- java.time.zone: 시간대 관련 클래스 모음
java.time 패키지의 핵심 클래스
- 핵심 클래스
- LocalDate: 날짜를 다루는 클래스
- LocalTime:시간을 다루는 클래스
- LocalDateTime:날짜와 시간
- zoneDateTime:LocalDateTime_zoneDld(시간대)
- 썸머타임제:자동계산
- zoneld
- .of(”시간대”):ex)Zoneid.of(”asia/seoul”)
- zoneld
- 썸머타임제:자동계산
- OffsetDateTime:LocalDAteTime+ZoneOffset(시간대+시간)
- 물리적 시간 차이(+9)
- ZoneOffset
- .of(”시간차이):zoneOffset.of(”+9”)
- .of(”시간차이):zoneOffset.of(”+9”)
- ZoneOffset
- 물리적 시간 차이(+9)
- 객체 생성하기
- static ….of (….):날짜,시간의 특정일시
- static ….now():현재 시점의 날짜와 시간
- Temporal과 TemporalAmount
- Temporal
- Temporal:날짜,시간,시간대📅⌚⌛
- TemporalAccessor:날짜,시간 조회 설계
- TemporalAdjustor:날짜,시간 변경 설계(위 세가지가 핵심 설계툴)
- Temporal
- TemporalIUnit과 TemporalField
- TemporalField -날짜 시간 필드-년,월,일
- ChronoField(Enum상수)
- ChronoField(Enum상수)
- TemportAlUnit-날짜,시간 단위-Days,HOURS
- ChronoUnit(Enum상수)
- ChronoUnit(Enum상수)
- TemporalField -날짜 시간 필드-년,월,일
- 특정필드의 값 가져오기
- get(TemporalField … )
- get(TemporalUnit…):Period,Duration
- 필드의 값 변경하기
- plus(int amount, TemporalUnit …):추가
- minus(int amount,TemporalUnit):감소
- with(TemporalField,int amount):변경
- 날짜와 시간의 비교
- isAfter
- isBefore
- isEqual
- instant
- Epoch time:1970,1,1,자정
- 1ms 카운팅한 정수
- 1초 단위 카운팅/timeStamp
- UTC+0 (Coordinated Universal Time)
- GMT
- Epoch time:1970,1,1,자정
참고
cal.add(int field, int amount)
: 해당 필드에 지정된 값을 더한다. 만약 필드가 날짜이면 지정된 수의 일 수를 더하며, 시간이면 지정된 수의 시간을 더한다.
cal.roll(int field, boolean up)
: 해당 필드를 더하거나 빼지 않고, 해당 필드만 변경한다. 만약 up이 true면 지정된 값을 더하고, false이면 지정된 값을 뺀다. 다른 필드에 영향을 주지 않는다.
ISO-8601은 날짜와 시간을 표현하는 국제 표준입니다. 이 표준은 날짜와 시간을 문자열로 표현하는 방법을 제공합니다. 이 방식은 YYYY-MM-DD 형식으로 날짜를 표현하고, T 문자를 사용하여 시간을 구분합니다. 시간은 HH:MM:SS 형식으로 표현되며, 시간대를 나타내는 문자열을 끝에 추가할 수 있습니다. 이 표준은 전 세계의 다양한 시스템에서 사용됩니다.
Period
는 "3개월"이나 "4년"과 같은 기간을 나타내는 java.time
패키지의 클래스입니다. 이는 두 날짜 또는 시간 사이의 시간 간격을 나타내며, 해당 날짜 또는 시간에 대한 계산을 수행하는 데 사용됩니다.
UTC는 협정 세계시(Coordinated Universal Time)의 약자입니다. 이는 세계 표준시를 기준으로 한 시간대 표준입니다.
GMT는 Greenwich Mean Time의 약자로, 영국의 그리니치 천문대를 기준으로 한 시간대를 나타냅니다.
그리니치 천문대(Greenwich Observatory)는 영국 런던 그리니치에 위치한 천문대입니다. 그리니치 천문대는 1884년 국제자오선회의에서 선정한 본초 자오선(本初子午線)의 기준점으로 사용되었습니다. 이 자오선은 지구를 둘러싸고 있는 자오선 중 하나로, 그리니치 천문대를 지나는 선입니다. 이 자오선을 기준으로 하여 세계시(UTC)가 결정됩니다.
자오선은 지구를 둘러싸는 자오선 중 하나로, 그리니치 천문대를 지나는 선입니다. 이 자오선을 기준으로 하여 세계시(UTC)가 결정됩니다.
Enum 클래스는 자바에서 상수를 다루는 클래스입니다. 상수는 값을 한 번 정해놓으면 변경할 수 없으며, 프로그램 전체에서 공유됩니다. Enum 클래스는 이러한 상수 값들을 하나의 클래스로 정의하고, 그 외에 메서드나 인스턴스 변수도 추가할 수 있습니다. 이렇게 정의된 Enum 클래스의 상수 값은 다른 클래스에서 참조할 수 있으며, 값이 변경되지 않기 때문에 안정적인 프로그래밍을 할 수 있습니다.
public enum DayOfWeek {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
위 코드는 DayOfWeek
라는 이름의 Enum 클래스를 정의하는 코드입니다. 이 클래스는 요일을 표현하는 상수 값들을 포함하고 있습니다. 이렇게 정의된 Enum 클래스는 다른 클래스에서 사용할 수 있으며, 상수 값이 변경되지 않기 때문에 안정적인 프로그래밍이 가능합니다.
Uploaded by N2T