问题在于 System.currentTimeMillis()
以不同的时间范围返回错误的毫秒数,主要在未来有时长达 6 个月,但从几秒到几个月不等。
发生这种情况的设备是Android 5.1.1上的平板电脑型号Huawei M2-A201W,内核版本为:**3.10.74-gdbd9055**
我的第一个假设是 NTP 不知何故弄乱了时间,但我有成千上万的平板电脑,其中一些没有网络连接,没有 SIM 卡,所以没有 GSM/3G/4G .
我正在使用 System.currentTimeMillis()
在本地 sqlite 数据库中创建行的时间保存在表的列中。
这种异常情况在我使用的平板电脑上经常发生(每个 System.currentTimeMillis()
调用的 30%)。
最佳答案
作为使用 System.currentTimeMillis()
的一种解决方法,也许您可以让 sqlite 处理时间戳创建,看看是否能解决您的问题?
使用 timestamp default current_timestamp
或 default(strftime('%Y-%m-%d %H:%M:%f' , 'now'))
如果你也需要毫秒,像这样:
sqlite> 创建表 my_table(id 整数主键自增不为空,命名文本,创建时间戳 default(strftime('%Y-%m-%d %H:%M:%f', 'now ')) 不为空);
sqlite> 插入 my_table(name) 值 ('MyTestRow1');
sqlite> 插入 my_table(name) 值 ('MyTestRow2');
sqlite> select * from my_table;
1|MyTestRow1|2017-08-07 10:08:50.898
2|MyTestRow2|2017-08-07 10:08:54.701
关于android - System.currentTimeMillis() 在华为上返回错误的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509101/