- GMT : GreenWich Mean Time
- 영국 그리니치 천문대 기준으로 하는 태양 시간
- 한국의 타임존은 보통 GMT +09:00 으로 표현됨
- UTC
- 지구의 자전 주기의 흐름이 늦어지고 있는 문제를 해결한 시간. GMT를 대체하기 위한 새로운 표준으로 GMT와 아주 미세한 차이인데, 소프트웨어에서 사용할 때는 UTC가 더 정확한 표현
- ISO 8610
연-월-일시:분:초2021-07-19T17:40:00+09:00
- +/- 시간
- T : 날짜 뒤에 시간이 오는 것을 표시해 주는 문자
- : 날짜와 시간 관련된 데이터 교환을 다루는 국제 표준. 국제 표준화 기구(ISO)에 의해 공포되었고, 1988에 처음으로 공개됨
- JDK 1.8 이전
- java.util 패키지에 Date 클래스나 Calendar 클래스 사용
- SimpleDateFomrmat simpleDateFormat = new SimpleDateFormat(”yyyy-MM-dd”);
- JDK 1.8 이후
- java.time 패키지가 추가됨
- java.time : 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공
- java.time.chrono : 표준(ISO)이 아닌 달력 시스템을 위한 클래스들을 제공
- java.time.format : 날짜와 시간을 파싱하고, 형식화하기 위한 클래스들을 제공
- java.time.temporal : 날짜와 시간의 필드(field)와 단위(unit)를 위한 클래스들을 제공
- java.time.zone : 시간대(time-zone)와 관련된 클래스들을 제공
- java.time 패키지가 추가됨
LocalDate, LocalTime, LocalDateTime에 대해 더 알아보자
- 이 세개의 클래스는 모두 타임존 개념을 가지고 있지 않기 때문에 타임존에 따른 시간 변환이 불가능
LocalDate
: 날짜 정보를 위해 사용
LocalDate today = LocalDate.now(); //2022-08-05
LocalDate birthday = LocalDate.of(2000, 1, 11); //2000-01-11
LocalDate christmas = LocalDate.parse("2022-12-25"); //2022-12-25
getYear(); //연도2022
getMonth(); //(Month 열거값나옴 JANUARY, FEBRUARY)
getMonthValue(); //월(1,2,3,...)
getDayOfYear(); //년의 몇 번째 일
getDayOfMonth(); //월의 몇번째 일
getDateOfWeek(); //요일(MONDAY, TUESDAY,...)
isLeapYear(); //윤년여부
LocalTime
: 타임존 개념이 필요없는 시간 정보를 나타내기 위해서 사용
LocalTime currentTime = LocalTime.now(); //11:57:33.804
LocalTime timeToGoToBed = LocalTime.of(23, 30, 0); //23:30
getHour() // 시간
getMinute() //분
getSecond() // 초
getNano() //나노초
LocalDateTime
: 타임존 개념이 필요없는 날짜와 시간 정보 모두를 나태나기 위해서 사용(LocalDate + LocalTime)
출력 형식 변환
DateTimeFormatter.ofPattern()
LocalDateTime localDateTime = LocalDateTime.of(2021, 1, 1, 0, 0, 0);
String localDateTimeFormat = localDateTime
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS"));
연산
- plus : plusXX(long XX) - XX만큼 추가
LocalDateTime plusYears(long years) - 인자만큼 년도 추가
LocalDateTime plusMonths(long months) - 인자만큼 달 추가
LocalDateTime plusWeeks(long weeks) - 인자만큼 주 추가
LocalDateTime plusDays(long days) - 인자만큼 일 추가
LocalDateTime plusHours(long hours) - 인자만큼 시간 추가
LocalDateTime plusMinutes(long minutes) - 인자만큼 분 추가
LocalDateTime plusSeconds(long seconds) - 인자만큼 초 추가
LocalDateTime plusNanos(long nanos) - 인자만큼 나노세컨드 추가
- minus : minusXX(long XX) - XX만큼 감소
LocalDateTime minusYears(long years) - 인자만큼 년도 감소
LocalDateTime minusMonths(long months) - 인자만큼 달 감소
LocalDateTime minusDays(long days) - 인자만큼 일 감소
LocalDateTime minusWeeks(long weeks) - 인자만큼 주 감소
LocalDateTime minusHours(long hours) - 인자만큼 시간 감소
LocalDateTime minusMinutes(long minutes) - 인자만큼 분 감소
LocalDateTime minusNanos(long nanos) - 인자만큼 나노세컨드 감소
LocalDateTime minusSeconds(long seconds) - 인자만큼초 감소
- 비교
isAfter() - 인자보다 미래 시간이라면 true 반환
isBefore() - 인자보다 과거 시간이면 true 반환
isEqual() - 인자와 같은 시간이면 true 반환
compareTo()
compareTo() > 0 : 인자보다 미래 시간
compareTo() < 0 : 인자보다 과거 시간
compareTo() == : 인자와 같은 시간
between(startDate,endDate);
between(startTime,endTime);
- 변환
LocalDate toLocalDate()
- 시간 단위(시간, 분, 초, 나노세컨드)가 없는 LocalDate로 반환
LocalDateTime localDateTime = LocalDateTime.now();
localDateTime.toLocalDate();
해당 월의 마지막 날짜 찾기
String targetDate = "2020-02-02";
YearMonth targetYearMonth = YearMonth.from(LocalDate.parse(targetDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
//해당 월의 일 수(int)
System.out.println(targetYearMonth.lengthOfMonth()); // 29
//해당 월의 마지막 날(LocalDate)
System.out.println(targetYearMonth.atEndOfMonth()); // 2020-02-29
해당 주차의 날짜 찾기
final long calendarWeek = 34; //34주차 입력
LocalDate desiredDate = LocalDate.now()
.with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, calendarWeek)
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
//결과 : 2020-08-17
//DayOfWeek.MONDAY = 해당 주차에 월요일
'공부 > Java' 카테고리의 다른 글
[Java] 자바 배열 복사하기 (0) | 2023.01.12 |
---|---|
[Java]자바의 정렬 라이브러리 Arrays.sort() / Collections.sort() / List.sort() 비교 정리 (0) | 2023.01.05 |
[Java]Comparable / Comparator 인터페이스 특징과 차이 정리 (0) | 2023.01.05 |
[Java] DFS/BFS 탐색 알고리즘 (0) | 2022.02.08 |
[Java]파일 읽기 (0) | 2022.01.18 |
댓글