【GPS授时系列】手机系统里的时间戳问题

本文探讨了Android系统中使用currentTimeMillis()获取时间戳存在的问题,包括系统时间依赖NTP校准可能导致的时间跳跃和单调性丢失。为解决此问题,建议结合System.nanoTime()来获取更精确且具有顺序性的时序信息,以确保时间戳的正确性。在手机设备上,由于温度变化和基站时间不精确,此类问题尤为突出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.手机系统时间存在的问题

Android系统或者Java程序在打时间戳时,经常使用System.currentTimeMillis(),如果直接用这个函数来打时间戳,会存在潜在的问题,即无法保证单调性和顺序性,对于这个函数,Java官方解释是这样的

currentTimeMillis
public static long currentTimeMillis()

Returns the current time in milliseconds. Note that while the unit of time of the return value is a millisecond, the granularity of the value depends on the underlying operating system and may be larger. For example, many operating systems measure time in units of tens of milliseconds.
See the description of the class Date for a discussion of slight discrepancies that may arise between "computer time" and coordinated universal time (UTC).
Returns:
the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.

currentTimeMillis是1970年1月1日到当前时间经过的毫秒数,这个时间依赖系统日期,其底层实现就是直接获取系统日期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值