【Spring Boot】Date형의 값이 9시간 어긋났을 때에 확인·대응한 것 정리
6039 단어 spring-boot
그 때에 확인&대응한 것의 정리입니다.
환경
전제 사항
확인 내용
1. DB의 시간대 설정 확인
대상의 값이 DB 유래인 경우는 우선, DB의 설정이 올바르게 되어 있는지 확인합시다.
다음과 같이 show variables 명령을 실행합니다.
실행 명령 및 결과
> show variables like '%time_zone%';
+------------------+------------+
| Variable_name | Value |
+------------------+------------+
| system_time_zone | UTC |
| time_zone | Asia/Tokyo |
+------------------+------------+
일본 표준시의 경우 time_zone이 Asia/Tokyo로 설정되어 있어야 합니다.
(default의 경우 system_time_zone의 값을 참조합니다.)
다른 경우 설정 파일 my.cnf의 내용을 다음과 같이 변경합시다.
/etc/my.cnf
[mysqld]
default-time-zone = 'Asia/Tokyo'
설정이 완료되면 다음 명령을 실행하여 일본 표준시에서 현재 시간을 얻을 수 있는지 확인합니다.
현재 시간 확인 명령
select now();
2. 애플리케이션 서버의 시간대 설정 확인
대상의 값이 DB 유래가 아니거나, DB의 설정에 문제가 없었던 경우는 어플리케이션 서버의 타임 존을 확인합시다.
가장 빠른 방법은 예를 들면 다음과 같은 코드를 추기해 콘솔에 서버의 현재 시각을 출력시키는 방법입니다.
현재 시간 출력 코드
System.out.println("現在の時刻は" + new Date() + "です。");
위에서 가정한 결과를 얻지 못하면 환경 변수를 설정합니다.
(1) Eclipse를 사용하여 프로젝트를 시작하는 경우
다음 절차에 따라 서버의 시간대를 설정합니다.
① Eclipse의 메뉴 바에서 「실행」(①) > 「실행 구성」(②)을 선택.
② Spring Boot 어플리케이션의 대상의 앱을 선택하고(①), 인수 탭에서(②) VM 인수란에 「-Duser.timezone=JST」라고 기재하고(③), 「적용」을 누름(④)
(2) 서버에서 부팅하는 경우
jar 파일과 같은 계층에, 「jar 파일의 이름.conf」라고 하는 이름으로 설정 파일을 작성해, 설정 내용을 기술.
jar 파일의 이름이 hoge.jar이면 다음과 같습니다.
hoge.conf
JAVA_OPTS="-Duser.timezone=Asia/Tokyo";
설정이 완료되면 재부팅하여 시간이 올바르게 설정되었는지 확인합니다.
3. 애플리케이션 등록 정보 파일의 Jackson 시간 설정 확인
상기 1, 2에서도 상정의 결과를 얻을 수 없었던 경우는 어플리케이션 프로퍼티 프로퍼티 파일에 이하의 기술을 추가해 봅시다.
application.yml
spring:
jackson:
dateFormat: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Tokyo
dateFormat의 부분은 임의.
표시할 형식을 설명합니다.
여담입니다만, 소스 코드로 개별적으로 형식 변경하는 것도 가능!
예를 들면 다음과 같이 기술하면, 「yyyy/MM/dd」형식이 됩니다.
@JsonFormat(pattern = "yyyy/MM/dd")
private Date createdAt;
끝에
처음 무엇이 원인으로 시간이 어긋나고 있는지 모르고, 매우 당황했습니다.
차례로 확인하는 것으로 원인까지 따랐습니다!
그 밖에도 시간이 어긋나는 요소가 있으면, 꼭 가르쳐 주세요!
참고
1. DB의 시간대 설정 확인
2. 애플리케이션 서버의 시간대 설정 확인
3. 애플리케이션 등록 정보 파일의 Jackson 시간 설정 확인
Reference
이 문제에 관하여(【Spring Boot】Date형의 값이 9시간 어긋났을 때에 확인·대응한 것 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/C_HERO/items/b0150814dcc33cdc5473텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)