我在Solr中索引了一些包含一些时间戳的文档,例如:
2017-10-21T11:53:33Z
。
当我从Solr Admin UI执行查询时,我会得到正确的信息(确切的时间戳)。
但是,当我从SolrJ执行查询时,我得到以下时间戳:
Sat Oct 21 14:53:33 EEST 2017
存储此时间戳的字段具有以下类型:org.apache.solr.schema.TrieDateField
因此格式和时区已更改。我读了this帖子和this一个,我理解SolrJ在检索日期时会考虑当地时区,但为什么会这样呢?
此外,格式已更改,我不希望这样!我想要将日期索引到Solr时输入完全相同的格式。
当我使用SolrJ从Solr检索日期时如何更改此日期格式?如何在检索使用Solr Admin UI时可以看到的确切值(确切的时区)?
答案 0 :(得分: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值的原因。