修正JIRA系統時間


現象

在JIRA上創建問題單、添加備注等操作的顯示時間與系統時間或運行JIRA的機器的時間不一致。

原因

JIRA使用的時區(timezone) 是由 Java Virtual Machine 控制的,虛擬機默認使用系統時區。如果沒有配置,可能會導致JIRA顯示的時間與系統時間不一致的情況。

再深一點,日期和時間是被保存在JIRA數據庫中,取決於數據庫的時區信息。比如,對於PostgreSQL的 documentation:

所有時區聲明的日期和時間都被保存在UTC內部。在顯示到客戶端之前,會根據時區配置,將其轉換為特定時區的本地時間。

這個可以進一步證明:

jira6414=> select id, created from jiraissue;
  id   |          created           
-------+----------------------------
 10000 | 2016-09-06 18:41:53.983+00
 10001 | 2016-09-06 22:12:49.983+00
...
 10300 | 2016-09-15 17:06:25.544+00
 
jira6414=> SET TIME ZONE 'PST8PDT';
SET
jira6414=> select id, created from jiraissue;
  id   |          created           
-------+----------------------------
 10000 | 2016-09-06 11:41:53.983-07
 10001 | 2016-09-06 15:12:49.983-07
...
 10300 | 2016-09-15 10:06:25.544-07

 MySQL的時區可以按照 here 描述的方法進行配置。

此外,當通過另外一個服務器回復XML備份時,如果時區發生變化,會影響到數據庫的所有時間信息。這將在后邊詳細介紹。

JRASERVER-26039 - Verify the system timezone when an XML backup is restored RESOLVED .

解決辦法

  • 根據我們Setting the timezone for the JAVA environment(見下文) KB介紹的方法修改時區。
  • 確保在JIRA數據庫中配置了所需時區的輸出。
  • 確認默認時區不會被已經安裝的JIRA插件在運行時修改,這會導致很嚴重的問題。

設置JAVA環境時區

這篇知識庫文章是專門為Atlassian服務器平台編寫的,因為與Atlassian雲平台的功能差異,這篇文章提到的不能應用在雲產品上。

概述

Jira應用中的功能可能會依賴配置在JAVA環境中的時區,默認情況下,這個時區會操作系統中獲取,但是,可以通過為JVM虛擬機添加額外參數來改變默認方式。

時區可以通過修改運行JAVA的服務器時間進行修改,或者通過如下解決介紹的修改配置的方式:

修改時區

時區可以通過如下JVM參數來修改,根據我們 Setting Properties and Options on Startup 文章中的方式實現。下邊的李四將它設置為 America/Chicago:

-Duser.timezone=America/Chicago

 (info) Wikipedia上的時區列表List of TZ Database Time Zones 詳細介紹了所有可設置的時區信息。

示例時區

Timezone Code
Shanghai Asia/Shanghai
Los Angeles America/Los_Angeles
New York America/New_York
Paris Europe/Paris
Rome Europe/Rome
UTC UTC
Madrid Europe/Madrid


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM