我将我的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日期和时间我的设备时间错误的时间?
答案 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以来的毫秒数。