2013-04-04 136 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