Calendar 导致的一个bug

bug的表现

查询不到数据。

bug的排查过程

把Calendar生成的Date通过getTime()打印出时间戳。

bug原因分析

因为数据库里的数据是每天生成的,所以对应的时间毫秒为0,而Calendar生成的时间没有对毫秒进行set值覆盖,导致使用到了当前时间的毫秒值。此时由于查询条件是 >= 导致这部分数据被忽略掉了。

总结

由于 Calendar.getInstance(); 是通过当前时间进行初始化,如果没有显性给对应的对应的field进行set值的话,就会使用的是当前时间的field。(下次使用 Calendar 时一定记得对所有的时间field进行赋值,确保不出问题。)

上一篇:Java 定时器的使用:每天定时执行任务


下一篇:P486大数据处理-P497Date