티스토리 뷰
반응형
이전 글에서 날짜와 시간을 관여하는 클래스들을 살펴보았다면 이번 글에서는 연관되어 있는 클래스들을 살펴보려 합니다.
날짜 가져오기
LocalDate.now(); // 오늘
LocalDateTime.now(); // 지금
Year.of(2021).atMonth(6).atDay(30).atTime(10, 23); // 2021년 6월 30일 10시 23분
기간 가져오기
Period.ofYears(2); // 2년간
Period.ofMonths(5); // 5개월간
Period.ofWeeks(4); // 4주간
Period.ofDays(15); // 15일간
Duration.ofDays(2); // 48시간
Duration.ofHours(10); // 10시간
Duration.ofMinutes(27); // 27분간
Duration.ofSeconds(888); // 888초간
저번 글에도 작성하였지만 plus와 minus 연산을 하여 시간을 계산해보겠습니다.
날짜 + 기간 = 날짜
LocalTime.of(9, 21, 15).plus(Duration.ofMinutes(12)); // (9시21분15초) + (12분) = 9시33분15초
LocalDate.of(2021, 6, 30).plus(Period.ofDays(3)); // (2021년6월30일) + (3일) = 2021년7월3일
LocalDateTime.of(2021, 6, 30, 10, 28, 32) // 2021년6월30일 10시28분32초
.minus(Period.ofWeeks(3)) // - 3주 = 2021년6월9일 10시28분32초
.plus(Duration.ofSeconds(27)); // + 27초 = 2021년6월9일 10시28분59초
LocalDate.now().plusDays(1); // (오늘 + 1일) = 내일
LocalTime.now().minusHours(5); // (지금 - 5시간) = 5시간 전
날짜 변환
* LocalDate -> String
String parse =
LocalDate.of(2021, 6, 30)
.format(DateTimeFormatter.BASIC_ISO_DATE); // 20210630
* LocalDateTime -> String
String parse =
LocalDateTime.now()
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// 2021-06-30 10:40:23
* LocalDateTime -> java.util.Date
Date dt =
Date.from(LocalDateTime.now()
.atZOne(ZoneId.systemDefault())
.toInstant()); // Wed Jun 30 01:40:23 KST 2021
* LocalDate -> java.sql.Date
Date dt =
Date.valueOf(LocalDate.of(2021, 06, 30)); // 2021-06-30
* LocalDateTime -> java.sql.Timestamp
Timestamp ts =
Timestamp.valueOf(LocalDateTime.now()); // 2021-06-30 10:40:23.355
* String -> LocalDate
LocalDate ld1 =
LocalDate.parse("2021-06-30"); // 2021년6월30일
LocalDate ld2 =
LocalDate.parse("20210511", DateTimeFormatter.BASIC_ISO_DATE); // 2021년5월11일
* String -> LocalDateTime
LocalDateTime ldt1 =
LocalDateTime.parse("2021-06-30T10:30:11"); // 2021년6월30일 10시30분11초
LocalDateTime ldt2 =
LocalDateTime.parse("2014-11-21 12:34:56",
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
// 2014년11월21일 12시34분56초
* java.util.Date -> LocalDateTime
LocalDateTime now =
LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
// 2021-06-30 10:48:55.113
* java.sql.Date -> LocalDate
LocalDate ld =
new Date(System.currentTimeMillis()).toLocalDate();
// 2021-06-30
* java.sql.Timestamp -> LocalDateTime
Timestamp ts =
new Timestamp(System.currentTimeMillis()).toLocalDateTime();
// 2021-06-30T10:53:41.312
* LocalDateTime -> LocalDate
LocalDate ld =
LocalDate.from(LocalDateTime.now()); // 2021-06-30
* LocalDate -> LocalDateTime
LocalDateTime ldt =
LocalDate.now().atTime(10, 55); // 2021-06-30T10:55
요일로 날짜 가져오기
// 다음 일요일
LocalDate nextSunday =
LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
// 2021년 6월의 두번째 화요일(2021-06-08)
LocalDate secondTuesday =
LocalDate.of(2021, 6, 30).with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.TUESDAY));
// 2021년 6월의 첫번째 월요일(2021-06-07)
LocalDate firstMonday =
LocalDAte.of(2021, 6, 6).with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
마지막으로 언어별로 출력하는 방법입니다.
// Monday
DayOfWeek.MONDAY.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
// M
DayOfWeek.MONDAY.getDisplayName(TextStyle.NARROW, Locale.ENGLISH);
// Mon
DayOfWeek.MONDAY.getDisplayName(TextStyle.SHORT, Locale.ENGLISH);
// 월요일
DayOfWeek.MONDAY.getDisplayName(TextStyle.FULL, Locale.ENKOREANGLISH);
// 월
DayOfWeek.MONDAY.getDisplayName(TextStyle.NARROW, Locale.KOREAN);
// 월
DayOfWeek.MONDAY.getDisplayName(TextStyle.SHORT, Locale.KOREAN);
// February
Month.FEBRUARY.getDisplayName(TextStyle.FULL, Locale.US);
// 2월
Month.FEBRUARY.getDisplayName(TextStyle.FULL, Locale.KOREA);
반응형
'Server' 카테고리의 다른 글
Ubuntu 20.04 Java 설치 (0) | 2021.08.18 |
---|---|
MVC Redirect 에서 OOM 방지하기 (0) | 2021.07.01 |
[Spring] @Order 를 사용하여 보안 필터링 적용하기 (0) | 2021.06.30 |
Nginx를 활용한 에러 페이지 출력하기 (0) | 2021.06.26 |
Nginx Error Log 설정과 보는 방법 (0) | 2021.06.26 |
Java 의 LocalDateTime과 Hibernate (0) | 2021.06.23 |
댓글
공지사항