因為 new date()只能獲取系統本地時間,如果修改本地時間,new date()獲取的就是修改后的時間。 在百度上查找了好多JS獲取網絡時間的方法
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.3.0");
xmlhttp.open("GET", "http://bjtime.cn", false);
xmlhttp.setRequestHeader("If-Modified-Since", "bjtime");
xmlhttp.send();
var dateStr = xmlhttp.getResponseHeader("Date");
var date = new Date(dateStr);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var date1 = date.getDate();
var hour = date.getHours();
var minutes = date.getMinutes();
var second = date.getSeconds();
alert(date + " | " + year + "年" + month + "月" + date1 + "日" + hour + "時" + minutes + "分" + second + "秒");
幾乎都說的這個方法,但不知道為啥 var xmlhttp = new ActiveXObject(“MSXML2.XMLHTTP.3.0”); 這句話一直報錯,換成別的對象但獲得的只是1970年的
所以只好去尋找在后臺獲取網絡時間,再用Ajax傳到前臺了
@RequestMapping("/getWebsiteDatetime")
public @ResponseBody MessageModel getWebsiteDatetime() {MessageModel result = new MessageModel();try {URL url = new URL("http://www.ntsc.ac.cn");// 取得資源對象URLConnection uc = url.openConnection();uc.connect();// 發出連接Long ld = uc.getDate();// 讀取網站日期時間result.setData(ld);result.setSuccess(true);return result;} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return result;
}
這是后臺代碼,網絡地址可以換成別的 下面是前臺代碼
function time() {clearTimeout(timeId);$.post("${ctx}/padV2/plan/getWebsiteDatetime", {} ,function(r) {dt = new Date(r.data);var y = dt.getFullYear();var mon = dt.getMonth() + 1;var d = dt.getDate();var h = dt.getHours();var m = dt.getMinutes();var s = dt.getSeconds();var currentTime = "";currentTime += y + "-";if (mon > 9)currentTime += mon + "-";elsecurrentTime += "0" + mon + "-";if (d > 9)currentTime += d + " ";elsecurrentTime += "0" + d + " ";if (h > 9)currentTime += h + ":";elsecurrentTime += "0" + h + ":";if (m > 9)currentTime += m + ":";elsecurrentTime += "0" + m + ":";if (s > 9)currentTime += s + "";elsecurrentTime += "0" + s + "";document.getElementById("currentTime").innerHTML = currentTime;})timeId = setTimeout(time, 1000);}弄了個時鐘,但這種方法一秒發送一次請求的總感覺效率太低,如果只是獲取個網絡時間這個還是可以的