如何使用互联网时间服务器来获取时间?
我想获得GMT [格林威治标准时间],我也不想依赖我的系统日期时间。基本上,我想使用时间同步服务器,如 in.pool.ntp.org
[印度]进行GMT计算,或者可能是我走错了方向!
如何在Java中执行此操作?
有没有Java库可以从时间服务器获取时间?
我想获得GMT [格林威治标准时间],我也不想依赖我的系统日期时间。基本上,我想使用时间同步服务器,如 in.pool.ntp.org
[印度]进行GMT计算,或者可能是我走错了方向!
如何在Java中执行此操作?
有没有Java库可以从时间服务器获取时间?
sp0d 不太对:
timeInfo.getReturnTime(); // Returns time at which time message packet was received by local machine
因此,它只返回当前系统时间,而不是收到的系统时间。请参见 TimeInfo 手册页。
您应该使用
timeInfo.getMessage().getTransmitTimeStamp().getTime();
相反。
因此,代码块将是:
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);
这是我在其他地方找到的代码。我正在使用它。使用apache commons library。
时间服务器列表:NIST 互联网时间服务
import java.net.InetAddress;
import java.util.Date;
import org.apache.commons.net.ntp.NTPUDPClient;
import org.apache.commons.net.ntp.TimeInfo;
public class TimeLookup {
public static void main() throws Exception {
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.getReturnTime();
Date time = new Date(returnTime);
System.out.println("Time from " + TIME_SERVER + ": " + time);
}
}
返回输出时间::time-d.nist.gov
Sun Nov 25 06:04:34 IST 2012