如何将CellInfo时间戳转换为实际日期?

时间:2018-11-04 16:38:42

标签: android telephonymanager cellinfo

我正在使用TelephonyManger.getAllCellInfo收集有关附近小区的信息。我注意到CellInfo包含一个名为mTimestamp的字段,根据文档,该字段为:

  

自启动以来,此电池信息的大概时间(以纳秒为单位)

现在,我想将此时间转换为实际时间戳,这将为我提供采样的具体日期。

是否正在这样做:return System.currentTimeMillis() - timestampFromBootInNano / 1000000L;是转换它的正确方法?

1 个答案:

答案 0 :(得分:1)

不。自装置启动以来,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等一起使用。