>  기사  >  Java  >  springboot 데이터베이스를 쿼리할 때 시간대 차이 문제를 해결하는 방법

springboot 데이터베이스를 쿼리할 때 시간대 차이 문제를 해결하는 방법

PHPz
PHPz앞으로
2023-06-04 17:37:031518검색

    springboot 데이터베이스 쿼리 시 발생하는 시간대 차이

    최근 프로젝트에서는 여러 데이터 소스를 사용하여 MySQL 라이브러리에서 mongo 라이브러리로 데이터를 마이그레이션하는 것으로 나타났습니다. - 검색된 데이터와 원본 데이터의 시간 차이.

    마지막으로 시어머니 이후 문제가 해결되었습니다. 기록:

    스프링부트를 사용했기 때문에 두 가지 더 실용적인 방법을 보았습니다. , 여기서 사용한 것은 구성 파일 application.yml을 수정하는 것입니다. 또한 다른 방법은 온라인에서 찾을 수 있습니다.

    1 데이터베이스 연결 구성에서

    &serverTimezone=GMT%2b8
     primary:
          jdbc-url: jdbc:mysql://******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
          username: ****
          password: *****
        secondary:
          jdbc-url: jdbc:mysql://*******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
          username: *****
          password: ********

    항목을 추가합니다.

    &serverTimezone=GMT+8 这里使用%2b替换 + 号

    2. 부팅 구성 파일에 jackson 구성을 직접 추가하세요

    #在application.yml中增加配置
    spring:
        jackson:
            time-zone: GMT+8

    시간을 성공적으로 수정하는 방법도 있습니다.

    springboot new Date() 시간대 차이는 8시간

    1 k8s 환경에서 코드에서 시간을 비교해 보세요. 새로운 Date()에서 차이는 8시간입니다

    호스트 시간대가 cst 시간대인지 확인하세요

    Java 코드를 사용하여 컨트롤러 시간대를 작성하고 GMT인지 확인하세요

    코드는 다음과 같습니다.

    Calendar calendar = Calendar.getInstance();      
            System.out.println("目前时间:" + calendar.getTime());
            System.out.println("Calendar时区::" + calendar.getTimeZone().getID());
            System.out.println("user.timezone:" + System.getProperty("user.timezone"));
            System.out.println("user.country:" + System.getProperty("user.country"));
            System.out.println("默认时区:" + TimeZone.getDefault().getID());

    출력되는 시간대는 GMT로 호스트와 다르므로 운영 및 유지보수를 알 수 없으면 직접 하세요

    시간대가 문제인 것 같습니다-

    1. =Asia/Shanghai를 데이터베이스 링크 db

    2에 추가합니다. springboot 시작 스크립트-Duser.timezone=GMT+08

    3.jackson 전역 구성

    spring.jackson.date-format: yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone: GMT+8

    4.

    위 내용은 springboot 데이터베이스를 쿼리할 때 시간대 차이 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제