开发中经常会遇到需要将服务器时间或者网络时间显示在浏览器上,在网上查找了好久也没找到一套完整的代码,自己花了点时间完成了,现总结下来,希望能给其他像我一样查找这个问题的人一个帮助。
实现原理:
在页面加载的时候,调用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中
Js代码
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.onload=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页面上的代码,如有意见,欢迎广大博友指正。