现象

在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 详细介绍了所有可设置的时区信息。

示例时区

TimezoneCode
ShanghaiAsia/Shanghai
Los AngelesAmerica/Los_Angeles
New YorkAmerica/New_York
ParisEurope/Paris
RomeEurope/Rome
UTCUTC
MadridEurope/Madrid

转载于:https://www.cnblogs.com/l200702031000/p/10081437.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐