得到确切的UTC日期& Android设备时间错误的时间

时间:2016-09-27 10:50:02

标签: android datetime utc

我将我的Android手机时间更改为2016年9月28日下午4:14,现在我正在使用以下代码获取当前UTC时间

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm");
f.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(f.format(new Date()));

输出我现在得到的内容: 2016-09-28 10:43
预期产出: 2016-09-27 10:43

如何获得确切的UTC日期和时间我的设备时间错误的时间?

3 个答案:

答案 0 :(得分:3)

您可以从公共服务器时间给出时间。 记得在清单中添加INTERNET权限。

String TIME_SERVER = "time-a.nist.gov";   
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime();
Date time = new Date(returnTime);

答案 1 :(得分:0)

如果设备时间错误,您可以从网络(GSM / WIFI)检索日期/时间。可以使用以下代码完成

long networkTS = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER).getTime();

如果网络时间已过,那么您可以调用locationManager.requestSingleUpdate()并传递网络提供商

答案 2 :(得分:-2)

System.currentTimeMillis()确实为您提供自1970年1月1日00:00:00 UTC以来的毫秒数。