我所在的地方,时间比GMT + 2早两个小时。 当我使用新的GregorianCalendar(y,m,d,d,h,m,s)对日期进行编码,然后使用具有DAY分辨率的DateTools.dateToString时,我最终得到了前一天。
编码午夜12,11,1770我最终获得了1月31日(22:00),这显然是不正确的。问题更严重,因为stringToDate不会给我相同的数字。
显然,这种可怕的混乱是设计上的。
补偿这一点的正确方法是什么,以便可以正确搜索出生日期。
由于
答案 0 :(得分:3)
您使用哪个构造函数来创建GregorianCalendar?如果您没有指定时区,它将只使用默认值,即您正在运行代码的机器的时区。
确保传递给dateToString的Date对象已正确归一化为GMT。在搜索方面,您还需要将日期查询规范化为GMT。
无法绕过规范化 - 您不知道代码的执行位置,因此您需要通过标准化为GMT来锚定日期