【问题标题】:Solr does not retrieve the date correctlySolr 无法正确检索日期
【发布时间】:2018-05-29 10:11:01
【问题描述】:

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

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

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

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

Sat Oct 21 14:53:33 EEST 2017

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

所以格式和时区发生了变化。我阅读了thisthis 的帖子,我知道 SolrJ 在检索日期时会考虑本地时区,但为什么会发生这种情况?

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

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

【问题讨论】:

    标签: datetime solr timezone solrj


    【解决方案1】:

    SolrJ 解析来自 Solr 的响应,将字符串“2017-10-21T11:53:33Z”转换为 Date 对象并返回给您。 默认情况下,时区以您的本地时区 (EEST) 打印,因此它只是一个表示形式,但日期/时间是相同的。您可以转换它并在任何时区显示。

    例如看到这个答案:https://stackoverflow.com/a/22364501/937970

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

    java -Duser.timezone=UTC ...
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 2020-05-03
      • 1970-01-01
      相关资源
      最近更新 更多