需要第三方架包commons-net-1.4.1.jar
private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* @author 2013-11-21 下午05:51:49
* @功能:获取网络最新时间
* @return
*/
public String getDateTime(){
try {
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress timeServerAddress = InetAddress.getByName("cn.pool.ntp.org");
TimeInfo timeInfo = timeClient.getTime(timeServerAddress);
TimeStamp timeStamp = timeInfo.getMessage().getTransmitTimeStamp();
return dateFormat.format(timeStamp.getDate());
} catch (UnknownHostException e) {
e.printStackTrace();
logger.error("与ntp服务器同步时间错误!", e);
return dateFormat.format(new Date());
} catch (IOException e) {
logger.error("与ntp服务器同步时间错误!", e);
return dateFormat.format(new Date());
}
}
/**
* @author 2013-11-21 下午05:55:43
* @功能:应用服务器时间与ntp服务器时间同步
*/
public void dateTimeSynchronization(){
try {
String datetime = getDateTime();
String date = datetime.substring(0, 10);
String time = datetime.substring(11);
Runtime.getRuntime().exec("cmd /c date " + date); //修改应用服务器年月日
Runtime.getRuntime().exec("cmd /c time " + time);//修改应用服务器时分秒
} catch (IOException e) {
logger.error("与ntp服务器同步时间错误!", e);
}
}
解决通过ntp服务器获取时间比系统时间少八个小时的问题;