Android 系统下通过系统时间去读取数据库记录,引发的读取记录不全问题!

Android 系统下通过系统时间去读取数据库记录,引发的读取记录不全问题!

需求

数据库中存储了一些记录,带时间戳的。需要我读取当天的数据(根据Android平板的时间进行读取)

所以就有了如下的代码:

Calendar instance = Calendar.getInstance();
instance.set(Calendar.SECOND, 0);
instance.set(Calendar.HOUR, 0);
instance.set(Calendar.MINUTE, 0);
instance.set(Calendar.MILLISECOND, 0);
long startTime = instance.getTimeInMillis();

instance.set(Calendar.SECOND, 59);
instance.set(Calendar.HOUR, 23);
instance.set(Calendar.MINUTE, 59);
long endTime = instance.getTimeInMillis();
session.queryBuilder(XXX.class)
.// 此处有N多其他的条件
.where(XXXDao.Properties.Time.between(startTime, endTime))
.list();

结果:
在我的平板上运行没问题,在大多数平板上运行也没问题。

问题发现

在测试的手中有一个平板,发现一个问题就是,记录中明明有当天的数据,但是就是搜索不出来。

问题解决过程

首先我怀疑是数据库未检索出来数据,所以去掉其他的条件,开始查数据库,结果发现了数据。

所以开始判定是我的开始时间和结束时间出现了问题。

所以断点了一下,看一下数据库里的数据,和我的开始时间和结束时间有什么区别。

结果发现,开始时间大于所有数据的时间戳。

所以,我推测是上边的时间计算出现了错误,检查时间设置的代码,发现了

instance.set(Calendar.HOUR, 0);

这里用的是Calendar.HOUR,轰然想起,好像还有另外一个Calendar.HOUR_OF_DAY

于是改为Calendar.HOUR_OF_DAY

再次测试,并计算时间戳,发现正确了,记录也读取出来了~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值