Today I Learned
(24.06.04)[8주차] Java에서의 LocalDate 포맷으로 파싱
Java Spring에 관하여서 학습하느라 간단히 지나갈 수 있었떤 JPA Auditing의 createdAt modifiedAt의 내용에 대해서 점검하면서 학습을 진행했다.
팀프로젝트가 시작되었기 때문에, 팀 프로젝트의 내용과 TIL 을 합쳐서 포스팅 할 것
Java Spring Framework & Java 에서의 LocalDate 포맷
- Java에서 Date 날짜 포맷을 다루고 있는데, Java의 정석에서 다른 부분을 더 심도있게 공부하느라 넘겼기 때문에, 이번에 살펴보면서 확인하고 학습하려고한다.
Spring Framework의 JPA Auditing에서의 LocalDate과 매핑
- @Temporal을 통해 Java에서의 java,util.Calendar, java.util.Date, 과 매핑을 할 수 있음
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class Timestamped {
@CreatedDate
@Column(updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime createdAt;
}
- @MappedSuperclass : createdAt, modifiedAt 처럼 추상 클래스에 선언한 멤버변수를 컬럼으로 인식
- 이럴 경우 LocalDateTime 포맷을 사용할 수 있음
- @EntityListeners(AuditingEntityListener.class) : Jpa Auditing기능을 사용할 수 있게 해줄 수 있는 Annotation
Java의 java.time 패키지
- 기존의 java의 Date 와 Calendar의 단점을 해소하기 위한 JDK 1.8 부터 추가된 패키지
- 가장 기본이 되는 클래스는 LocalDate, LocalTime, LocalDateTime
문자열을 시간으로 파싱
- CODE KATA 등 코드 테스트에서 가장 많이 사용할 수 있는 부분
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.DayOfWeek;
class Solution {
public String solution(int a, int b) {
String date = String.format("2016-%02d-%02d", a, b);
LocalDate localDate = LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
DayOfWeek day = localDate.getDayOfWeek();
String answer =day.toString().substring(0,3);
return answer;
}
}
- static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter ) 형태
- DateTimeFormatter의 ofPattern() 메서드를 통해서 LocatDate 타입의 형태로 파싱
- 다른 코드에서도 많이 사용하는 형태와 유사
- DateTimeFormatter의 ofPattern() 메서드를 통해서 LocatDate 타입의 형태로 파싱
- DayOfWeek 타입
- getDayOfYear(), getDayofMonth() 등의 LocalDate의 메서드는 메서드 이름으로만 직접적으로 반환 타입과 그 기능을 알 수 있지만, getDayofWeek() 는 는 DayOfWeek 타입으로 반환
- getDayOfWeek() 메서드를 통해서 해당 날짜에 해당하는 요일이 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY의 DayOfWeek 타입으로 반환
- String 타입이 아닌점 주의! enum의 개념
- 따라서, 이어서 getValue()를 이어서 쓴다면, MONDAY는 1 부터 SUNDAY 7 까지로 얻을 수 있음
-> JPA에서도 사용되는 포맷이기 때문에 반드시 공부한 내용을 기억을 해놨다가 바로 사용을 할 수 있도록
기본적인 부분이지만, 이제 팀 프로젝트가 시작할 수 있기 때문에, 매번 확인하는 것보다 한번더 점검하고,
또 CODE KATA에도 동시에 나와서 한번더 점검을 할 수 있었다.
'Today I Learned' 카테고리의 다른 글
(24.06.07)[8주차] Spring Data의 Paging & Sort 정리 (0) | 2024.06.07 |
---|---|
(24.06.05)[8주차] Response용 DTO 활용 (0) | 2024.06.05 |
(24.06.03)[8주차] PriorityQueue (1) | 2024.06.03 |
(24.05.31)[7주차] Spring Security Filter에서의 Password Encoder (1) | 2024.05.31 |
(24.05.30)[7주차] Access Token과 Refresh Token 구현 (0) | 2024.05.30 |