Dwi*_* Ji 26 datetime android real-time time-format
如何找出真正的地理时间,就像在我的应用程序中我想要将实时附加到我的应用程序.
因此,如果用户在他的设备中更改时间,那么我应该只获得真实的时间 - 而不是设备时间
我的问题很混乱,但试着用简单的语言理解 -
我不想要设备时间,我想在任何时刻获得真正的预备时间
您需要使用NTP(网络时间协议)协议:
这是我在其他地方找到的一些代码......我正在使用它.这使用Apache Commons库,可以使用Gradle安装(添加依赖项commons-net:commons-net:3.6)
如果您需要时间服务器列表,请查看: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);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,Android代码必须在后台线程上运行并包含gradle依赖项:
implementation 'commons-net:commons-net:3.6'
Run Code Online (Sandbox Code Playgroud)
没有 Android API 可以让您有这样的时间。用户可以随时更改设备时间,对此您无能为力。
最好的办法是运行带有网络服务的服务器,您可以从中获得时间。由于您控制服务器,您可以尝试确保它返回正确的时间。