在Android中获得准确的UTC时间

时间:2015-07-21 02:41:53

标签: java android java-time

好的,这可能是基本的,但不幸的是我还没有找到任何有用的东西。

我希望某些功能仅在特定于UTC / GMT时间的时间范围内在Android中发生。

你是怎么做到的?我尝试使用System.currentTimeMillis(),但如果您在设置中更改Android设备上的时间,这也将更改System.currentTimeMillis()。

我想抓住一个等于UTC / GMT的时间并且独立于Android设备设置时钟,因此如果设备上的时钟发生变化,它就不会干扰。

有什么想法吗?

谢谢! 克里斯托弗史蒂文

3 个答案:

答案 0 :(得分:3)

如果你想要一个真正准确的时间,

person是你的朋友。*

time.nist.gov

(如果你在Android上运行,请务必将所有这些捆绑在一个帖子中!)

我喜欢做的一件事是利用服务器时间和系统时间之间的差异并存储以备将来使用。简而言之,只要系统时间没有摆弄,您就不必多次打电话。您可以花费系统时间并根据差异进行更改。

*你需要apache commons来实现这个目的。

答案 1 :(得分:0)

您需要来自互联网的时间服务。您可以从 时间服务器 NIST

获取实时时间

apache-commons有一个TimeInfo课程,可以 NTP 日期

示例:NTPClient

答案 2 :(得分:0)

System.nanoTime()返回自启动时间以来的纳秒数,因此不易受系统时钟变化的影响。

在启动时使用:

long startTime = System.TimeInMillis();
long nanoToDeduct = System.nanoTime();

然后在任何时间点你可以获得程序的当前时间,因为时钟是在程序启动时设置的

long currentTime = startTime - timeToDeduct + System.nanoTime();