Я пытаюсь получить время с NTP-сервера.У меня есть метод, который запрашивает время у нескольких серверов (если первый дает результат, другой не будет задан вопрос о резервном копировании).Чтобы определить дату из InetAddress, я использую TimeInfo из библиотеки: commons-net: commons-net: 3.0.1.Это решило время так, как должно, но стало проблемой, когда я вручную изменил время на телефоне.Если при преобразовании даты я установлю время на 1/2/2019 этого NTPUDPClient, он даст эту дату вместо фактической 29.01.2009.Я хочу преобразовать это время в фактическую дату, даже если пользователь изменит время на телефоне.
Попытался найти способ разрешения этого InetAddress с помощью какого-либо другого компонента, но не смог ничего найти.
public Date getCurrentTimeFromNtpServer() {
Date result = null;
NTPUDPClient client = new NTPUDPClient();
client.setDefaultTimeout(2000);
for (String host : NTP_SERVERS) {
try {
InetAddress inetAddress = InetAddress.getByName(host);
TimeInfo timeInfo = client.getTime(inetAddress);
result = DateUtil.toUtc(new Date(timeInfo.getReturnTime()));
break;
} catch (IOException e) {
Logger.warn(TAG, "Failed to get current time MTP", e);
}
}
client.close();
return result;
}