server-time.jsp内容如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%
String path = request.getContextPath(); String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
<script language="javascript" type="text/javascript">
//因程式執行耗費時間,是以時間并不十分準确,誤差大約在2000毫秒以下
var xmlHttp = false;
//擷取伺服器時間
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
xmlHttp.open("GET", "null.txt", false);
xmlHttp.setRequestHeader("Range", "bytes=-1");
xmlHttp.send(null);
severtime = new Date(xmlHttp.getResponseHeader("Date"));
//擷取伺服器日期
var year = severtime.getFullYear();
var month = severtime.getMonth() + 1;
var date = severtime.getDate();
//擷取伺服器時間
var hour = severtime.getHours();
var minu = severtime.getMinutes();
var seco = severtime.getSeconds();
//擷取用戶端時間
localtime = new Date();
//取得時間差
var jtime = Math.abs(localtime.getTime() - severtime.getTime());
var jdate = jtime / (24 * 60 * 60 * 1000);
var jhour = jtime % (24 * 60 * 60 * 1000) / (60 * 60 * 1000);
var jminu = jtime % (24 * 60 * 60 * 1000) % (60 * 60 * 1000) / (60 * 1000);
var jsecond = jtime % (24 * 60 * 60 * 1000) % (60 * 60 * 1000)
% (60 * 1000) / 1000;
//格式化輸出用戶端時間
function getClientTime() {
localtime = new Date();
var cyear = localtime.getFullYear();
var cmonth = localtime.getMonth() + 1;
var cdate = localtime.getDate();
var chour = localtime.getHours();
var cminu = localtime.getMinutes();
var cseco = localtime.getSeconds();
ccyear = addZero(cyear);
ccmonth = addZero(cmonth);
ccdate = addZero(cdate);
cchour = addZero(chour);
ccminu = addZero(cminu);
ccseco = addZero(cseco);
cinnerdata = "目前用戶端時間:";
document.getElementById("clienttime").innerHTML = cinnerdata + ccyear
+ "-" + ccmonth + "-" + ccdate + " " + cchour + ":" + ccminu
+ ":" + ccseco;
document.getElementById('xctime').innerHTML = "時間相差:"
+ Math.round(jdate) + "天" + Math.round(jhour) + "小時"
+ Math.round(jminu) + "分鐘" + jsecond + "秒 總計:" + jtime + "毫秒";
}
//格式化輸出伺服器時間
function getSeverTime() {
seco++;
if (seco == 60) {
minu += 1;
seco = 0;
}
if (minu == 60) {
hour += 1;
minu = 0;
}
if (hour == 24) {
date += 1;
hour = 0;
}
//日期處理
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
|| month == 10 || month == 12) {
if (date == 32) {
date = 1;
month += 1;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
if (date == 31) {
date = 1;
month += 1;
}
} else if (month == 2) {
if (year % 4 == 0 && year % 100 != 0) {//閏年處理
if (date == 29) {
date = 1;
month += 1;
}
} else {
if (date == 28) {
date = 1;
month += 1;
}
}
}
if (month == 13) {
year += 1;
month = 1;
}
sseco = addZero(seco);
sminu = addZero(minu);
shour = addZero(hour);
sdate = addZero(date);
smonth = addZero(month);
syear = year;
innerdata = "目前伺服器時間:";
document.getElementById("servertime").innerHTML = innerdata + syear
+ "-" + smonth + "-" + sdate + " " + shour + ":" + sminu + ":"
+ sseco;
setTimeout("getSeverTime()", 1000);
setTimeout("getClientTime()", 100);
}
function addZero(num) {
num = Math.floor(num);
return ((num <= 9) ? ("0" + num) : num);
}
</script>
</head>
<body οnlοad="getSeverTime();">
<p id="servertime"></p>
<p id="clienttime"></p>
<p id="xctime"></p>
</body>
</html>
運作效果如圖:

另外一個JS效果的動态顯示目前用戶端時間client-time.html,可以通過修改用戶端時間檢視這兩種的差別
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>目前日期</title>
目前時間:
<div id="time" style="color:red;">
<script>
document.getElementById('time').innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay());
setInterval("document.getElementById('time').innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDay());",1000);
</script>
</div>
</body>
</html>