代码之家  ›  专栏  ›  技术社区  ›  Cosmin Ioniță

Solr无法正确检索日期

  •  1
  • Cosmin Ioniță  · 技术社区  · 7 年前

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

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

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

    Sat Oct 21 14:53:33 EEST 2017

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

    所以格式和时区都改变了。我读了 this 邮递 this 据我所知,SolrJ在检索日期时会考虑本地时区,但为什么会发生这种情况呢?

    而且,格式也改变了,我不想这样!我想要和我把日期索引到Solr时输入的格式完全一样的格式。

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   asamolov    7 年前

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

    例如,请看以下答案: https://stackoverflow.com/a/22364501/937970

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

    java -Duser.timezone=UTC ...
    

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

    推荐文章