알고쓰면 약이고, 모르고 쓰면 독이라 했다.
예전 어느 프로젝트에서 2019-12-30일 날짜를 기준으로 아래코드를 실행시키면 202012 로 나오는 상황때문에 주말에 급히 원격작업을 해야했던 적이 있었다.
SimpleDateFormat yyyymm = new SimpleDateFormat("YYYY-MM")
Year와 WeekYear의 차이를 알자
java 1.7기준 SimpleDateFormat 'Date and Time Patterns'를 보면 yyyy와 YYYY는 큰 차이를 보인다.
YYYY는 주 년 (javadoc를 참조)이며, 로케일에 따라서는 1 월 상순 날짜를 사용하는 경우는 과거 1 년 53 주를 12 월 하순 날짜를 사용하는 경우 새해 1 주 눈을 반환 할 수 있습니다.
주 단위 component를 사용했을때, 발생하는 문제
365 / 7 = 52.142857....
위와 같은 계산으로 1년은 52.1주이며 53주가 되었을경우 12월 30일 같은 연말이 되었을경우 53주에 들어가므로 다음년으로 계산하는 오류를 발생시킬 수 있다.
다른 개발자분들도 기본적으로는 yyyy를 다 사용하시겠지만, 간혹 연말에 이상한 오류가 발생해서 관련내용을 저처럼 찾아보실분들이 계실까하여 :)
기본에 충실하고, 공부하자
항상 기본이 중요한것 같습니다. 저도 요즘 블로그 이웃분들 글보면서 기본부터 착실히 공부하고있습니다 :)
항상 부족함을 느끼고 노력하는 개발자가 되야지~ ㅎㅎ
'마니의 공부방 > Java' 카테고리의 다른 글
[java] int와 Integer의 차이 (0) | 2021.01.14 |
---|---|
[java] Exception printStackTrace() 를 문자열로 (0) | 2021.01.06 |
[java] JsonAraay null 입력 (0) | 2021.01.05 |
[myBatis] update 와 함께 insert 하기 (0) | 2021.01.03 |
[spring] profiles 개발용/서버용 나누어 적용하기 (1) | 2020.12.31 |