【发布时间】:2017-06-28 06:55:22
【问题描述】:
如何在 Android 中以纳秒为单位查找自 Epoch 以来的时间?
以下 APIS 可用,但它们只是给出启动后的时间
-
SystemClock.elapsedRealtimeNanos()- 自启动以来的时间,但包括深度睡眠时间 -
System.getnano()-> 这是开机后的正常运行时间,没有深度睡眠时间。
对于 Epoch 时间,似乎只有 1 个 API 可用。
-
System.currentTimeMillis()-> 以毫秒为单位显示自 Epoch 以来的时间。
是否有类似的 API/新方法可以获取自纪元以来的时间(以纳秒为单位)。
PS : Time since Epoch 表示自 1970 年 1 月 1 日 UTC 以来经过的时间。
【问题讨论】:
-
Java 不提供
clock_gettime函数,因此您选择通过 JNI 获得更准确的计时,而且调用 JNI 会有开销,因此不会 100% 准确 -
@Rod_Algonquin 谢谢。我看到 System.currentTimeMillis() 也是本机调用。所以我想,我可以使用 JNI,但我一直在寻找 android 中可以给我纳秒级的可用 APIS。我想目前还没有可用的 APIS。
-
@Rod_Algonquin 我正在尝试查看 currentTimeMillis() 的本机实现,但找不到源。如果你知道它在哪里,请与我分享。它会帮助我。
-
您可以在本地 jdk 文件夹中检查它,文件名是
os_solaris.cpp,或者您可以直接到这里:hg.openjdk.java.net/jdk7u/jdk7u60/hotspot/file/ba66650acf63/src/…
标签: android datetime epoch nanotime