java - lucene dateToString,stringToDate

标签 java lucene

我所在的地区时间比 GMT+2 早两个小时。 当我使用 new GregorianCalendar(y,m,d,d,h,m,s) 对日期进行编码,然后使用具有 DAY 分辨率的 DateTools.dateToString 时,我最终得到的是前一天。

编码 12:00 midnight 1,1,1970 我最终得到的是 1 月 31 日 (22:00),这显然是不正确的。问题更糟,因为 stringToDate 没有给我返回相同的数字。

显然,这种可怕的困惑是有意设计的。

补偿此问题的正确方法是什么,以便实际上可以正确搜索出生日期。

谢谢

最佳答案

您使用哪个构造函数来创建 GregorianCalendar?如果您不指定时区,它将只使用默认值,即您碰巧运行代码的机器的时区。

确保您传递给 dateToString 的 Date 对象正确标准化为 GMT。在搜索方面,您还需要将日期查询规范化为 GMT。

无法绕过规范化——您不知道代码将在何处执行,因此您需要通过规范化为 GMT 来锚定日期

关于java - lucene dateToString,stringToDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490464/

相关文章:

java - 二进制除法问题 : bad examples on internet or what am I missing?

Java 8 : Getting a property from a List of a List

java - 用solr构建标签云

java - 对方法的返回类型感到困惑

java - 单击 JButton 时如何更新它的文本?

java - 为什么Lucene的IndexWriter updateDocument方法的参数中只接受一个Term?

json - 如何在Elasticsearch中过滤内部对象?

php - 使用PHP的NLP编程工具?

java - Lucene从索引文件中获取所有未删除的文档

java - 在列表中正确使用泛型