android - System.currentTimeMillis() 在华为上返回错误的时间戳

标签 android linux ntp huawei-mobile-services

问题在于 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_timestampdefault(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/

相关文章:

linux - 我的 CIFS 安装有时钟差异吗?

Linux 通过 proc fd0、dev/pts 重定向输入

c - 为客户端 tcp 套接字绑定(bind)一个端口

tcp - 通过互联网同步时钟

android - 将示例 url 转换为带 header android 的 http 请求?

java - JVM加载共享库的过程是怎样的?

c - 确定 (S)NTP 数据包的目标时间戳?

java - 随机洗牌类(class)成员的方法

android - 用 textviews 包裹布局

默认锁定屏幕上的 Android Activity