我的solr中有一个数据:Using the Solr Administration User Interface,modifyTime是“ 2016-04-20T13:58:35.805Z”。

使用solrj:
enter image description here,modifyTime为“ 2016年4月20日星期三CST”。

我正在使用solr6。为什么?

最佳答案

来自Solr Administration用户界面的ModifyTime数据格式为UTC,您可以通过datetime字符串末尾的Z来理解它,指示该日期的字符串表示形式为UTC。

2016-04-20T13:58:35.805Z


另一方面,来自数据格式的ModifyTime是CST –中部标准时间,在您的情况下,这似乎是+ 8小时。

Wed Apr 20 21:58:35 CST 2016


发生这种情况的原因是Java令人讨厌且功能较差,其中java.util.Date没有时区,但是toString方法应用了JVM的当前默认时区。

java.util.Date date = ( java.util.Date ) doc.getFieldValue("modifyTime");
DateTime dateTimeUtc = new DateTime( date, DateTimeZone.UTC );
String output = dateTimeUtc.toString();


编辑

感谢@BasilBourque对CST(时区缩写)含义的建议

09-05 14:22