JIRA REST API采用不同的日期时间格式

时间:2014-07-18 15:09:43

标签: jira jira-rest-api

使用JIRA REST API,至少有两种方法可以解决问题:

  • / JIRA /休息/ API / 2 /问题/ {issueIdOrKey}
  • /休息/ API / 2 /搜索?JQL

我在我的项目中使用了它们,但对于同一问题,它们会为updated字段返回略有不同的结果。

  • 按键获取:2014-07-18T17:53:02。 594 +0300
  • 搜索:2014-07-18T17:53:02。 000 +0300

由于某种原因,未设置搜索响应中的毫秒数。对我来说这看起来像个错误,但也许有配置设置或其他什么?

PS:我有最新的JIRA版本(6.2.6)

2 个答案:

答案 0 :(得分:1)

JQL搜索结果通常直接从Lucene索引中获取,该索引仅存储时间戳millisecond resolution,而获取实际问题直接从数据库中的jiraissue表中获取日期,该表可以{{3} (至少取决于你配置的数据库)。

已编辑:我发现我误读了上面的精度:获取问题返回的时间戳只返回毫秒(vs纳秒),而JQL查询只返回整数秒(vs毫秒),所以上面链接的Lucene数据类型不相关。

但是,答案仍然是相同的:JQL从Lucene获取结果,而问题fetch直接从数据库获取值。关于为什么Lucene索引没有返回毫秒的进一步调查:在BaseFieldIndexer.indexDateField的JIRA源中,JIRA调用LuceneUtils.dateToString(date)created字段转换为Lucene可索引的值。 dateToString方法显式地将字段转换为整数秒(在过程中丢弃任何毫秒),然后将数字转换为字符串表示以进行索引。

答案 1 :(得分:0)

奇!我用6.2实例检查了这个并且也有所不同:

JQL:更新时间:2014-07-11T19:34:04.000-0500 密钥:更新时间:2014-07-11T19:34:04.768-0500

我敢打赌,从搜索中返回问题列表的代码使用不同的日期格式化程序来清除毫秒,而从单个问题返回数据的格式化程序则不会这样做。我不知道任何会影响它的配置设置。

我建议将其作为http://jira.atlassian.com/browse/JRA的小错误归档 轻微,因为任何基于ms检查某些内容的代码似乎都是不明智的。