2013-04-04 141 views
20

如何找出皇家地理时,在我的应用程序,我想用我的应用程序连接实时。获取实时 - 而不是设备设置时间的Android

因此,如果用户更改其设备的时间,那么我应该只得到真正的通行时间 - 而不是设备时

我的问题是非常混乱,但尝试在一个简单的语言理解 -

我不想要设备时间,我想要在任何时间真正的超时时间

+0

你想UTC时间? – penguat 2013-04-04 10:19:18

+0

@penguat我只是想知道什么是真正的时间,而不是UTC或GMT时间 – 2013-04-04 10:22:33

+0

你的意思是在设备的位置的本地时间? – penguat 2013-04-04 10:26:53

回答

3

有没有Android API让你这样的时间。用户可以随时更改设备时间,对此无能为力。

你最好的选择是与Web服务,您可以从中获取时间运行的服务器。既然你控制了服务器,你可以尝试确保它返回正确的时间。

+0

我们可以使用joda时间库吗? – 2016-11-28 07:59:49

7

您需要使用NTP(网络时间协议)协议:

下面是一个代码,我发现somewhr别的..和我使用它。这使用apache commons库。

//列表的时间服务器:http://tf.nist.gov/service/time-servers.html

下面是Java代码,你

public class TimeLookup { public static final String TIME_SERVER = "time-a.nist.gov"; 

    public static void main(String[] args) throws Exception { 
     NTPUDPClient timeClient = new NTPUDPClient(); 
     InetAddress inetAddress = InetAddress.getByName(TIME_SERVER); 
     TimeInfo timeInfo = timeClient.getTime(inetAddress); 
     long returnTime = timeInfo.getReturnTime(); 
     Date time = new Date(returnTime); 
     System.out.println("Time from " + TIME_SERVER + ": " + time); 
    } 

} 
+6

需要互联网! – 2014-02-13 10:38:16

+0

链接已更新:http://tf.nist.gov/tf-cgi/servers.cgi – androidevil 2015-10-08 18:54:37

+0

在我的情况下,有效时间戳使用发现:timeInfo.getMessage()getReceiveTimeStamp()的getTime() – androidevil 2015-10-08 22:54:44