日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot时区配置

發布時間:2023/12/20 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot时区配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、測試數據
  • 二、結論
  • 三、對應截圖
    • 表格截圖:
    • -Duser.timezone
    • jdbc:mysql
    • time-zone
    • SQL日志 控制臺
    • 接口出參
  • 總結


前言

UTC: 全球標準時間
GMT: 格林威治標準時間
我不知道該怎么解釋UTC和GMT的關系, 我個人的理解是:
UTC+0=GMT+0,UTC+8=GMT+8 但是UTC不是GMT, GMT也不是UTC

這里會涉及到五個時區需要注意:

  • JVM時區
  • MySQL時區
  • 系統時區
  • jdbc鏈接時區
  • jackson指定時區

測試數據 + 結論 + 表格截圖


提示:表格中列出的名稱不是很規范, 大家看一下對應的截圖, 就知道了

一、測試數據

下面會列出一個表格, 就表格中的一些內容先做一下講解:
如果這里我表達的不是很清楚, 文章的下面也列出了對應的截圖

MySQL系統: 安裝MySQL的系統時間, 查詢命令: date -R MySQL: 數據庫的時區配置, 查詢命令: SHOW VARIABLES LIKE '%time_zone%' jdbc:mysql: jdbc:mysql://*****&serverTimezone=GMT -Duser.timezone: JVM的時區 time-zone: spring.jackson.time-zone SQL日志: 打印的SQL語句, 以及對應的結果 控制臺: 當我們查詢出來的數據, 放入entity或者map集合, get出來的值 接口出參: 比如postman調用接口, 返回的數據 MySQL系統MySQLjdbc:mysql-Duser.timezonetime-zoneSQL日志控制臺接口出參時間是否一致
+0800CSTGMT%2B8GMT+8GMT+82019-11-22 10:12:132019-11-22 10:12:132019-11-22 10:12:13
+0800CSTGMT%2B8GMT+8GMT+22019-11-22 10:12:132019-11-22 10:12:132019-11-22 04:12:13
+0800CSTGMT%2B8UTCGMT+82019-11-22 10:12:132019-11-22 02:12:132019-11-22 10:12:13
+0800CSTGMT%2B8UTCGMT+22019-11-22 10:12:132019-11-22 02:12:132019-11-22 04:12:13
+0800CSTGMT%2B8GMT+2GMT+82019-11-22 10:12:132019-11-22 04:12:132019-11-22 10:12:13
+0800CSTUTCGMT+8GMT+82019-11-22 10:12:132019-11-22 18:12:132019-11-22 18:12:13
+0800CSTUTCUTCGMT+02019-11-22 10:12:132019-11-22 10:12:132019-11-22 10:12:13
+0800CSTUTCUTCGMT+82019-11-22 10:12:132019-11-22 10:12:132019-11-22 18:12:13
+0800CSTGMT%2B2GMT+3GMT+42019-11-22 10:12:132019-11-22 11:12:132019-11-22 12:12:13
+0800CSTGMT-2GMT-3GMT-42019-11-22 10:12:132019-11-22 09:12:132019-11-22 08:12:13
+0000UTCGMT-2GMT-3GMT-42021-07-21 11:51:162021-07-21 10:51:162021-07-21 09:51:16

二、結論

通過上面的數據, 我得出一個結論:

SQL日志=
數據庫保存的數據對應的時間

控制臺=
((SQL日志)(2019-11-22 10:12:13)) - (jdbc:mysql)(GMT%2B8)) + (-Duser.timezone)(GMT+8))
= MySQL保存時間 - jdbc鏈接指定時區 + jvm時區
= 2019-11-22 10:12:13 - 8 + 8
= 2019-11-22 10:12:13

接口出參=
((SQL日志)(2019-11-22 10:12:13)) - ((jdbc:mysql)(GMT%2B8)) + ((time-zone)(GMT+8))
= MySQL保存時間 - jdbc鏈接指定時區 + jackson配置時區
= 2019-11-22 10:12:13 - 8 + 8
= 2019-11-22 10:12:13


三、對應截圖


表格截圖:


-Duser.timezone


jdbc:mysql


time-zone


SQL日志 控制臺


接口出參


總結

  • 從上面的統計, 時間都是基于MySQL保存的這個時間, 做對應的±操作
  • 在做涉及時區的項目, 如果就是一個地區, 那就按當地時區設置就行. 但是如果是同一個項目, 多個地區運行, 服務器就統一設置UTC時間, 包括數據庫UTC, JVM時區UTC, time-zone也就是展示給用戶看的時間, 配置對應的GMT±
  • 我沒有去看對應的源碼, 只是寫了一個簡單的測試用例得出的結果

  • new Date() = UTC + (-Duser.timezone)
  • 上面表格中列出的, 是不支持UTC±的寫法, 比如-Duser.timezone=UTC-8是識別不出來的
    但是-Duser.timezone=GMT-8或者-Duser.timezone=UTC是可識別的
  • 各個地區對應時區的網址嗎以及對應的用法: https://www.ibm.com/docs/zh/was/9.0.5?topic=ctzs-time-zone-ids-that-can-be-specified-usertimezone-property
  • 根據地址查時區: http://time.tianqi.com/dubai/
  • 具體UTC GMT CST PRT WET CET ECT …等等, 這個含義哈, 這個還得麻煩大家自行處理了, 汗顏, 哈哈哈, 當然也可以參考: 各個地區對應時區的網址嗎以及對應的用法

總結

以上是生活随笔為你收集整理的SpringBoot时区配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。