1. 程式人生 > >JAVA時區

JAVA時區

碰到個比較噁心的事情.

資料庫有個欄位是datetime的型別的,對映到java類裡是java.util.Date類

然而在insert的時候,會報錯,要求設定下時區,於是設定了.

jdbc.url=jdbc:mysql://localhost:3306/community4?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=UTC

但是存進去後發現時間比當前時間要小8個小時.

這個肯定是因為時區的問題.那麼到底是哪裡出現的問題呢?是JAVA虛擬機器的時區不對還是資料庫的時區不對呢?

先測試虛擬機器的時間:

列印

log.info("start:"+System.getProperty("user.timezone"));
結果是:
Asia/Shanghai

沒問題,是中國的時區.當然如果這裡顯示的不是上海而是其他的時區,就應該去這樣做

System.setProperty("user.timezone","Asia/Shanghai"); 

那麼就是資料庫的問題,去查看了資料庫

show now()
SHOW VARIABLES LIKE "%time_zone%";
這裡卻是個空的.怪不得需要我連線的時候傳入這個timezone.而根本原因就在於我傳入的是美國時間標誌,改成

改成CTT也就是中國的時區

jdbc.url=jdbc:mysql://localhost:3306/community4?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&serverTimezone=CTT
OK

相關推薦

java時區轉換

包括將世界標準時間轉換為本地時間和將世界標準時間轉換為目標時區的本地時間,以及將本地時間轉換為世界標準時間。 /** * @author j.tommy * @version 1.0 * @date 2017/12/10 */ public fin

Java 時區問題解析

—-Java每個時間區域都有一個時間區域ID識別符號,這個ID是個字串,是由位於J2SE 安裝程式的jre/lib子目錄中的tzmappings檔案儲存這些ID列表。 J2SE 1.3 僅僅只包含tzmappings檔案,但是 J2SE 1.4包含世界不同地

JAVA時區

碰到個比較噁心的事情.資料庫有個欄位是datetime的型別的,對映到java類裡是java.util.Date類然而在insert的時候,會報錯,要求設定下時區,於是設定了.jdbc.url=jdbc:mysql://localhost:3306/community4?us

關於java時區轉換夏令時問題及解決辦法

關於中國的夏令時問題:參考另外一篇:http://mp.blog.csdn.net/postedit/78924498這裡:主要講的是: 在夏令時結束的時候,java會提前一個小時變化如:2016年美國夏令時:3.13-11.6  正常變化點:紐約時間2016-3-13 2:

java 時區

1.最近在做系統時,突然發現瀏覽器時區與web伺服器時區可能存在不同,這樣就導致資料傳輸只能建立在UTC的基礎上,那麼應用伺服器和web伺服器也有可能不在同一個時區,所以資料庫資料存的也是UTC時間。 這就涉及要各種本地時間轉UTC時間,UTC時間轉本地時間的問題了。 在

Java 時區問題

在 Servlet 初始化的時候呼叫System.setProperty("user.timezone", "GMT+8");然後在其他 action 裡面(不同執行緒)呼叫 new Date() 得到的時間還是少了8個小時,此時檢視 system 環境變數,已經是 GMT+

Java時區處理之Date,Calendar,TimeZone,SimpleDateFormat

一、概述 1、問題描述       使用Java處理時間時,我們可能會經常發現時間不對,比如相差8個小時等等,其真實原因便是TimeZone。只有正確合理的運用TimeZone,才能保證系統時間無論何時都是準確的。由於我在外企工作,伺服器在美國,美國也有很多時區,經常會碰到向處於不同時區的伺服器發請求時需

java時區講解

資源 時區簡介 什麼是時區 時區是人為劃定的,以本初子午線中心(英國格林尼治天文臺),將地球劃為24個時區。時區向東加一區,時間調快一小時,時區向西加一區,時間調慢一小時。如北京為東八區,日本為東九區,北京時間比日本晚一小時。 時區分類 時區有0時區、東1-12區,西1

mysql-connector-java 6.x 時區設置

mysql-connector-java 6.x 時區設置 最近遇到了一個問題,java從mysql從讀出的時間與本地時間有14個小時的時間差,經查證、測試解決了此問題,在此總結一下:一、使用mysql-connector-java 6.x版本驅動需要做如下配置:1、引入pom<depend

詳解Java中的時區類TimeZone的用法

void system類 深入 pri comment 相對 系統 就會 lean 一、TimeZone 簡介 TimeZone 表示時區偏移量,也可以計算夏令時。 在操作 Date, Calendar等表示日期/時間的對象時,經常會用到TimeZone;因為不同的時區,

Java獲取指定時區的時間格式

示例 分享一個獲取指定時區的時間格式方法:timeZoneOffset指定為8,獲取東8區的時間,timeZoneOffset指定為-5,獲取西5區的時間。 import java.text.SimpleDateFormat; import java.util.Date; imp

java 獲取任一個時區時間

TimeZone timeZone = TimeZone.getTimeZone("Etc/GMT-8");   SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");  simpl

docker 執行java程式時區問題

如果 docker  上面 java  的當前時間比,真實時間慢了8 小時,那估計就是時區問題了, 需要在 打包docker映象的時候 帶上 localtime 和  timezone。(這2 個檔案後面附件裡面有) Dockerfile 裡面也要把 這個檔

Java中TimeZone(時區)類的簡單使用

package com.wk.time import java.util.TimeZone; public class LocaleTimeZone { public static void main(String[] args) { TimeZone zone =

java程式設計中遇到的時區與時間問題總結

(摘自http://www.cnblogs.com/flying5/archive/2011/12/05/2276578.html) 最近在程式設計中遇到了時間與時區相關的問題,整理在這裡   我的程式是一個在hadoop上執行的分散式程式,從mysql資料庫中取資料,經過處理之後輸出

MySQL資料庫時區問題導致java程式無法連線資料庫

轉載自 https://blog.csdn.net/man_zuo/article/details/81027934   先把報錯資訊貼上, The server time zone value '???ú±ê×??±??' is unrecognized or represents more

java時間展示格式和時區問題

一、在實體的屬性上加註解@JsonFormat @ApiModelProperty("建立時間") @Column("CJSJ") @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private D

Docker 伺服器下java查詢時區問題

最近遇到時區問題,著實讓人糾結,利用docker部署spring boot 服務(伺服器宿主機不是內地的,docker容器為centos7),當部署應用的時候出現了時間少8個鐘或者多8個鐘的問題...嘗試了 jdbc連線的時區修改,最終以失敗告終... 這是遇到問題的過程.

mysql-connector-java-6.x驅動類和時區問題

專案中出於效率的需要,我們將mysql驅動從改為了5.1.38改為了6.0.6,結果儲存的日期資料不對,網上查詢資料才知道連線引數中需要一個設定serverTimezone=Asia/Shanghai。

Java獲得指定時區時間

在Java語言中,您可以通過java.util.Calendar類取得一個本地時間或者指定時區的時間例項,如下: // 取得本地時間: Calendar cal = Calendar.getInstance(); //取得指定時區的時間:       TimeZone zo