[Java] LocalDateTime : 날짜 시간 처리 관련
Date ? Calendar? java.time? 뭘 써야 하나? : LocalDateTime
http://tcpschool.com/java/java_time_javaTime
https://d2.naver.com/helloworld/645609
LocalDateTime -> String
```java
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
```
LocalDateTime Json, Spring mapping
DB에서 꺼낸 데이터가 LocalDateTime 타입 필드에 들어갈 때 에러나는 경우가 있음.
Date format check
setter에서 데이터 넣기 전에 주로 체크.
```java
public void setQueryDate(String queryDate) {
Date date = null;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
try {
date = format.parse(queryDate);
if (!queryDate.equals(format.format(date))) {
// 예를 들어 ss에 90이 들어오면 +1분 +30초로 자동으로 나뉘어지게 되는데, 이를 방지하기 위함.
throw new ParseException(queryDate, 0);
}
} catch (ParseException e) {
throw new RuntimeException(e);
}
if (queryDate.length() > 14)
throw new StringIndexOutOfBoundsException();
else
this.queryDate = queryDate;
}
```
유틸리티로 따로 빼면
```java
public class DateFormatChecker {
public static boolean isValidFormat(String strFormat, String strDate) {
SimpleDateFormat format = new SimpleDateFormat(strFormat);
try {
Date date = format.parse(strDate);
// 예를 들어 ss가 90초이면 +1분 +30초로 자동으로 나뉘어지게 되는데, 이를 방지하기 위함.
return strDate.equals(format.format(date));
} catch (ParseException e) {
return false;
}
}
}
```
@TelegramField(position = 111, length = 5)
이런 식으로 중복되는걸 setter가 아니라 annotation으로 빼면 더 좋다.
DateFormatCheck나 size같은거...
*** timestamp millis 반환. 어떻게? ( 시간 측정 ? )
- ``java System.currentTimeMillis`` ? ``java System.nanoTime`` ?
- Intant.now()?
- www.baeldung.com/current-date-time-and-timestamp-in-java-8
- https://stackoverflow.com/questions/58705657/which-one-is-recommended-instant-now-toepochmilli-or-system-currenttimemill -> 둘 다 상관 없으나 java.time 패키지 쓰는게 나으니 Instant를 추천
- https://www.baeldung.com/java-measure-elapsed-time
시간 비교는 ChronoUnit이 제일 직관적
'Java Stack > Java' 카테고리의 다른 글
[Effective Java] 3장 모든 객체의 공통 메서드 (0) | 2019.12.04 |
---|---|
[Effective Java] 2장 객체 생성과 파괴 (0) | 2019.12.02 |
[Java] Enum (0) | 2019.06.06 |
[Java] Jackson ObjectMapper Serialization (0) | 2019.05.15 |
JVM 관련 (0) | 2017.05.05 |