现有环境描述: 有一个 JIRA 云实例在全球多个节点上运行。 JIRA 支持 Groovy 脚本。 在通过 JIRA 工作流创建新的 JIRA 问题和问题转换期间,使用一个脚本检查和设置某些自定义字段的值。 一些受影响的自定义字段表示日期时间(例如“截止日期”、“固定日期”等),相应地脚本应该能够处理它们。
在脚本内部 - 在执行主要操作之前 - 时区暂时设置为 UTC(以获取“预定义”时区和日期时间格式):
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
注意: 时区设置不是针对登录用户,而是“一般”,如上所述。
问题:
Groovy 文档没有指定更改的范围。 JAVA 文档 表明该更改会影响“Java 虚拟机”。
它是如何通过与 JIRA-instance 一起运行的 Groovy 脚本构建的?它会仅更改脚本虚拟空间的默认时区,还是更改此节点上所有 Groovy 脚本的默认时区,还是更改带有 JIRA 实例的当前节点的默认时区,甚至更改所有节点的默认时区?
当配置中存在 Jira 的全球使用时,如果您以某种方式进行时间计算,则这种时区配置对于正在运行的脚本来说是可接受且正确的。 这样想吧:
假设我想向两个用户发送一封邮件,告知任务将在某个截止日期到期,假设今天 15:00 (UTC)。
假设我的 Jira 环境位于 UTC+1。
如果我直接说“这将在 15:00 结束”而没有时区,如果用户 A 认为这是当地时间,他/她可能会错过这个截止日期。
所以,我得到了这样的日期,这样我就可以将用户发送到他们的本地日期。
或者,在另一种情况下,我可能会从用户那里获得一些小时信息,并且他正在当地时间输入该信息。因此,我可能想将其转换为 UTC(或任何所需的时区)以概括此过程。
用例有很多变体,我只指出了其中两个。
所以,如果您了解了这种方法背后的想法,让我们回答您的问题: