开发中经常会遇到需要将服务器时间或者网络时间显示在浏览器上,在网上查找了好久也没找到一套完整的代码,自己花了点时间完成了,现总结下来,希望能给其他像我一样查找这个问题的人一个帮助。
实现原理:
在页面加载的时候,调用Java方法取得最新的网络时间,然后将此网络时间赋到js的getTime方法中,在getTime方法中对取得的时间做分析和累加操作,最后将结果显示在jsp页面上。
第一步,Java 获取网络时间
public class TimeUtil {
/**
* @author 2015-09-07
* @功能:获取网络最新时间
* @return
*/
private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static String getDateTime(){
try {
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress timeServerAddress = InetAddress.getByName("time-a.nist.gov");
TimeInfo timeInfo = timeClient.getTime(timeServerAddress);
TimeStamp timeStamp = timeInfo.getMessage().getTransmitTimeStamp();
String date = dateFormat.format(timeStamp.getDate());
return date;
} catch (UnknownHostException e) {
e.printStackTrace();
return dateFormat.format(new Date());
} catch (IOException e) {
return dateFormat.format(new Date());
}
}
}
第二步,将时间显示在jsp中
function add_zero(temp) { if(temp<10){ return "0"+temp; }else{ return temp; } } //取得网络时间 function getTime(date){ // 取服务器时分秒 var date=new Date(date); var hour = date.getHours(); var minuts = date.getMinutes(); var second = date.getSeconds(); var week = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")[date.getDay()]; var year = date.getFullYear(); //获取完整的年份(4位,1970-????) var month = date1.getMonth()+1; //获取当前月份(0-11,0代表1月) var day = date1.getDate(); //获取当前日(1-31) second++; if(second>=60){ //判断秒是否到60, 是则进位 second = 0; minuts++; } if(minuts>=60){ //判断分是否到60, 是则进位 minuts = 0; minuts++; } newdate=year+"-"+month+"-"+day+" "+hour+":"+minuts+":"+second; var display = year+"年"+month+"月"+day+"日 "+add_zero(hour)+":"+add_zero(minuts)+":"+add_zero(second)+" "+week; $("#dvSystemTime").html(display); setTimeout("getTime(newdate)", 1000); } //页面加载时运行 window.οnlοad=function(){ var url = $.getContextPath("/getTime"); $.ajax({ url:url, type:'post', data:'', async : true, //默认为true 异步 error: function (XMLHttpRequest, textStatus, errorThrown) { alert("报错啦!"); }, success:function(data){ getTime(data); } }); }
以上就是完整的获取网络时间,并将其显示在jsp页面上的代码,如有意见,欢迎广大博友指正。