JS获取网络时间

本文探讨了使用JavaScript直接获取网络时间的局限性,特别是在处理不同浏览器和环境兼容性的问题。通过尝试多种方法,如利用XMLHttpRequest从特定网站抓取时间信息,最终转向后端获取网络时间并使用Ajax将时间数据传送到前端的解决方案。文章详细介绍了如何在Java后端通过URL获取远程服务器时间,并在前端展示经过格式化的实时时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为 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 + "-";
			else
				currentTime += "0" + mon + "-";
			if (d > 9)
				currentTime += d + " ";
			else
				currentTime += "0" + d + " ";
			if (h > 9)
				currentTime += h + ":";
			else
				currentTime += "0" + h + ":";
			if (m > 9)
				currentTime += m + ":";
			else
				currentTime += "0" + m + ":";
			if (s > 9)
				currentTime += s + "";
			else
				currentTime += "0" + s + "";
			document.getElementById("currentTime").innerHTML = currentTime;
            })
			timeId = setTimeout(time, 1000);
		}
	弄了个时钟,但这种方法一秒发送一次请求的总感觉效率太低,如果只是获取个网络时间这个还是可以的

这是第一次写博客,以后希望可以把新学到的用博客记录下。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值