事情是这样的,今天在开发手机后台时候,有个从数据库查询的Map,以Date作为主键且时间是5分钟倍数(数据库中处理的),然后构建另外一个数据集的时候需要从这个map查询数据,先利用Calendar生成初始化    

			Calendar cal = Calendar.getInstance();
			cal.set(year, month - 1, day, 0, 0, 0);
			Date begin = cal.getTime();
    然后利用这个begin以5分钟为增加额度来查询map,结果发现一个数据都查不到,而我确信查询条件是没错的,看了Date的源码其哈希判断是用Date的getTime()实现的,按道理只要时间相同是可以查到的,后来经过各种打印才发现原来是Calendar生成的begin毫秒位不是0,于是初始化时候加了句

cal.set(Calendar.MILLISECOND, 0);
解决问题。然后看了下Calendar源码,原来Calendar是用当前时间初始化的。


Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐