我所在的地区时间比 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/