我正在使用TelephonyManger.getAllCellInfo收集附近细胞的信息。我注意到CellInfo包含一个名为mTimestamp的字段,根据文档,该字段是:
自启动以来,该单元格信息在nanos中的大致时间
现在,我想将这次转换为一个实际的时间戳,它将给我采样的具体日期。
是这样做的吗:return System.currentTimeMillis() - timestampFromBootInNano / 1000000L;是转换它的正确方法吗?
发布于 2018-11-04 16:48:58
不是的。自设备启动以来,mTimestamp是以纳秒为单位测量的。System.currentTimeMillis()是从1970年1月1日午夜开始测量的毫秒。
您可以:
mTimestamp中减去SystemClock.elapsedRealtimeNanos(),以确定时间戳表示多少纳秒前System.currentTimeMillis()中减去这个值来确定时间戳的制作时间。因此,这给了我们:
long millisecondsSinceEvent = (SystemClock.elapsedRealtimeNanos() - timestampFromBootInNano) / 1000000L;
long timeOfEvent = System.currentTimeMillis() - millisecondsSinceEvent;timeOfEvent现在可以与java.util.Calendar、ThreeTenABP等一起使用。
https://stackoverflow.com/questions/53142971
复制相似问题