亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot接口返回的數(shù)據(jù)時間與實際相差8小時問題排查方式

 更新時間:2025年02月22日 09:14:14   作者:不會畫畫的畫師  
文章描述了在部署SpringBoot應用到容器中時遇到請求接口返回時間與實際相差8小時的問題,并詳細分析了可能的原因及具體的排查步驟和解決方案,總結指出,環(huán)境初始時區(qū)未配置是根本原因,建議在應用部署前配置好時區(qū)

SpringBoot接口返回的數(shù)據(jù)時間與實際相差8小時問題

場景描述

部署了一個SpringBoot應用在容器中,請求一個接口,接口返回的時間與實際相差8小時。

可能原因

1、容器的時區(qū)與實際時區(qū)相差差8小時

2、jvm時區(qū)與實際時區(qū)相差8小時

3、存入數(shù)據(jù)庫后的時間相差8小時

4、后端獲取的時間一致,但返回給前端后相差8小時

排查步驟

1、進入容器查看時間

$ date

2、編寫一個java應用查看jvm時間

import java.util.Date;

public class Demo {
   public static void main(String[] args) {
       Date date = new Date();
       System.out.println(date);
   }
}

3、查看數(shù)據(jù)庫時間

打開數(shù)據(jù)庫,查看數(shù)據(jù)庫中存儲的數(shù)據(jù)庫時間是否與實際一致

4、在后臺打印出后端獲取到的數(shù)據(jù)的時間,是否與前端一致

解決方案

容器時區(qū)與實際時區(qū)相差8小時:

如果排查第一步獲取到的時間與實際時間相差8小時,建議在容器的Dockerfile中添加以下內(nèi)容:

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

jvm時區(qū)與實際時區(qū)相差8小時:

如果排查第二步獲取到的時間與實際時間相差8小時,可以在SpringBoot的面向切面上或者main類上加以下代碼

@PostConstruct
void started() {
    TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
}

存入數(shù)據(jù)庫的時間與實際時區(qū)相差8小時:

如果排查第三步獲取到的時間與實際時間相差8小時,可以在SpringBoot應用配置文件application.yml修改數(shù)據(jù)庫連接信息,url末尾添加serverTimeZone=GMT%2b8

Spring的json構造器導致時區(qū)不一致:

以上三種情況的根本原因是由于環(huán)境初始的時區(qū)未配置,最佳方案就是在應用部署前就配置好各自的時區(qū)。

排查第四步出現(xiàn)時區(qū)不一致,是spring的json構造器的時區(qū)與實際的不一致。

可以修改springboot配置文件application.yml,添加以下內(nèi)容:

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

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論