js获取服务器时间
公司官网使用的是dedecms,在自定义表单中新建了一个表单作为留言框,而且需要记录用户留言的时间。
初步是想法是用户打开页面的时候,记录时间,然后写入到一个隐藏的input里面,跟随表单提交即可。
原先使用获取时间的js如下:
$(function() { var nowDate = new Date(); var str = nowDate.getFullYear() + "-" + (nowDate.getMonth() + 1) + "-" + nowDate.getDate() + " " + nowDate.getHours() + ":" + nowDate.getMinutes() + ":" + nowDate.getSeconds(); document.getElementById("time").value = str; });
html如下:
<input type="hidden" name="times" id="times" class="intxt" value="">
功能是实现了,但是后来查看留言时候发现,居然有些人留言是2008年,2009年,2010年等,我擦咧,这是穿越了吗?
才发现上面的js获取来的是用户电脑的时间,如果用户电脑时间不正确的话,就会出现上面说的那种情况。
百度一番,找到以下的可用JS:
ajax(); function ajax(option) { var xhr = null; if (window.XMLHttpRequest) { xhr = new window.XMLHttpRequest(); } else { // ie xhr = new ActiveObject("Microsoft") } // 通过get的方式请求当前文件 xhr.open("get", "/"); xhr.send(null); // 监听请求状态变化 xhr.onreadystatechange = function() { var time = null, curDate = null; if (xhr.readyState === 2) { // 获取响应头里的时间戳 time = xhr.getResponseHeader("Date"); console.log(xhr.getAllResponseHeaders()) curDate = new Date(time); document.getElementById("time").innerHTML = "服务器时间是:" + curDate.getFullYear() + "-" + (curDate.getMonth() + 1) + "-" + curDate.getDate() + " " + curDate.getHours() + ":" + curDate.getMinutes() + ":" + curDate.getSeconds(); } } }
html如下:
<p id="time"></p>
这样子获取到的时间就是服务器上面的时间啦,只要服务器时间正常就好了。
正在学习js,希望有天能在自己网站上使用。
不错的教程
js调用好写,但加到input里面就难了,你厉害!
代码有些复杂,前来支持大神!-
跨境电商运营 2017-06-17 19:01:12
@自闭症 感谢的分享!!!!
你的专业技术很强啊,我只会简单的,你的网站我已经收藏了,可以多学学