Solr 没有正确检索日期

Solr does not retrieve the date correctly

我在 Solr 中索引了一些文档,其中包含一些时间戳,例如:

2017-10-21T11:53:33Z.

当我从 Solr Admin UI 执行查询时,我得到了正确的信息(准确的时间戳)。

但是,当我从 SolrJ 执行查询时,我得到以下时间戳:

Sat Oct 21 14:53:33 EEST 2017

存储此时间戳的字段具有以下类型:org.apache.solr.schema.TrieDateField

因此格式和时区已更改。我读了 this post and this 一本书,我知道 SolrJ 在检索日期时会考虑当地时区,但为什么会这样?

此外,格式已更改,我不想这样!我想要将日期索引到 Solr 时输入的完全相同的格式。

当我使用 SolrJ 从 Solr 检索日期时如何更改此日期格式以及如何检索我在使用 Solr Admin 时可以看到的确切值(确切时区)UI?

SolrJ 解析来自 Solr 的响应,将字符串“2017-10-21T11:53:33Z”转换为 Date 对象,然后 returns 将其转换。 默认情况下,时区以您当地的时区 (EEST) 打印,因此它只是一种表示,但 date/time 是相同的。您可以转换它并在任何时区显示。

例如看到这个答案:

另一种选择是为您的 JVM 设置全球时区,但这可能会影响整个应用程序:

java -Duser.timezone=UTC ...

当您使用 Solr Admin UI 进行查询时,它只是 returns 您的原始值,这就是您看到 UTC 值的原因。