网页与服务器时间不一致,js解决客户端与服务器时间不一致的问题
引出
最近在寫一個項目時,要根據(jù)時間進行不同的展示,直接用new Date().getTime()獲取當前時間,結(jié)果就出問題了。有些用戶擅自修改自己的本地時間,導致獲取到的時間并不是當前時間,尷尬。
思路
既然如此,首先想到的就是讓本地時間以服務器的時間為基準,只要讓服務器傳一個時間戳過來就可以了。那如何實現(xiàn)動態(tài)獲取時間呢?畢竟不能每次獲取時間都到服務器去要吧。一個粗糙的思路,只要知道現(xiàn)在與獲取服務器時間過了多久,然后動態(tài)的相加就可以了。那如果記錄時間差呢?
剛開始我想的是,記錄獲取服務器時間時的時間點(gainServerTime),將當前時間點與gainServerTime相減,就可以得到經(jīng)過了多久。但是,如果用戶在進入頁面之后修改時間的話,就會得到錯誤的時間差,并不能解決問題。
然后我想到了定時器,記錄時間秒數(shù)experienceTime,每秒+1,固然會犧牲一定的性能,但問題是我沒想到更好的辦法。
實現(xiàn)
/**
* 獲取當前時間的對象
* @param serverTime
* 服務器時間戳(秒)
*/
function GetNowDate(serverTime){
this.serverTime = serverTime || new Date().getTime();
// 記錄經(jīng)歷時間
this.experienceTime = 0;
this.init();
}
?
/**
* 獲取當前時間戳,毫秒級
*/
GetNowDate.prototype.getTime = function (){
return this.getDateObject().getTime();
};
?
?
/**
* 獲取當前時間date對象
*/
GetNowDate.prototype.getDateObject = function(){
return new Date(this.getNowMilliTime());
};
?
?
// 獲取當前毫秒級時間戳
GetNowDate.prototype.getNowMilliTime = function(){
return (this.serverTime + this.experienceTime) * 1000;
};
?
// 初始化對象
GetNowDate.prototype.init = function(){
// 設置定時器,動態(tài)增加時間
var _this = this;
setInterval(function() {
_this.experienceTime++;
}, 1000);
};
當然,看著就有很多問題,之后遇到再完善吧
WCF客戶端和服務器時間不一致,導致通道建立失敗的問題)
本文轉(zhuǎn)載:http://www.cnblogs.com/bcbr/articles/2288374.html 最近,經(jīng)常有客戶反應,前天還用的好好的系統(tǒng),今天就不能用了. 考慮到系統(tǒng)近來沒有做過改動和 ...
解決Windows和Ubuntu時間不一致的問題
問題原因是使用的時間不一致導致的.win10直接從bios讀出來的時間認為就是實際時間,ubuntu認為加上8個小時 后的才是.win10用的rtc ,ubuntu用的utc 在ubuntu16.04 ...
【jenkins】jenkins服務器與svn服務器時間不一致出現(xiàn)的問題
問題描述: svn提交了一次更新包,到了jenkins提交更新的時候,第一次代碼沒有生效,然后重新提交了一次,第二次才生效. 問題排查: 1.首先第一反應比對了下兩次更新的包文件是否一致,然后發(fā)現(xiàn)大小 ...
【轉(zhuǎn)載】解決Windows和Ubuntu時間不一致的問題
大家在切換操作系統(tǒng)的時候會發(fā)現(xiàn)一個問題, Windows 和Ubuntu的時間會出現(xiàn)不一致的情況.在 Windows 中把時間設置正確了過后,回到在 Ubuntu 后系統(tǒng)的時間又不一樣了,在 Ubun ...
java 項目時間和服務器時間不一致
今天線上項目關于時間的幾個任務都出了問題,查看日志發(fā)現(xiàn)日志的時間不對,用的是log4j,日志輸出的時間都早了很長時間. 1 首先先登上服務器查看了服務器的系統(tǒng)時間 linux下 date命令 時間正確 ...
html+js 在頁面同步服務器時間
將以下的代碼? 放置html頁面中! quot ...
JS實現(xiàn)Ajax---例:獲取服務器時間
Ajax在本質(zhì)上是一個瀏覽器端的技術(shù) XMLHttpRequest XMLHttpRequest對象 XMLHttpRequest對象在IE瀏覽器和非IE瀏覽器中創(chuàng)建的方法不同. 簡而言之:它可以異步 ...
moment.js 默認使用服務器時間
在前端使用Date對象獲取當前時間的時候,該時間是客戶端的時間.但是該時間可以被用戶修改,所以我們一般情況下并不想要這個時間.如果每一次獲取時間的時候都請求一下服務器,那么將會對服務器造成不必要的壓力 ...
JS根據(jù)服務器時間倒計時
原文鏈接:http://caibaojian.com/daojishi-2.html //獲取服務器時間 function getSevertime(){ var xmlHttp = new XMLH ...
隨機推薦
MooseFs-分布式文件系統(tǒng)系列(四)之簡單聊聊MFS的日常維護
回顧 文件或目錄的額外屬性(noower,noattracache和noentrycache),可以通過MFS提供的命令(mfsgeteattr,mfsseteattr,mfsdeleattr等)檢查 ...
Linux和UNIX監(jiān)控
Linux和UNIX上的數(shù)據(jù)庫監(jiān)控工具包括監(jiān)控CPU.內(nèi)存.磁盤.網(wǎng)絡.安全性和用戶的監(jiān)控工具.下面羅列了我們找到的有用工具及其簡單描述. ps ? ? ? ? ? 顯示系統(tǒng)上運行的進程列表 top ...
mac OS X 10.9.1 配置jdk環(huán)境變量
進入命令行 cd ~ touch .bash_profile vi .bash_profile 輸入內(nèi)容jdk變量配置內(nèi)容: export JAVA_HOME=/Library/Java/JavaVi ...
Handlebars 介紹
最新項目用到了Ember.js前端框架,第一次使用這樣的框架,準備國慶節(jié)花2天時間,研究一下它的用法. Ember框架的模板引擎用到了handlebars, 先看國外的一篇介紹文章:An Introd ...
MVC中的路由
authour: chenboyi updatetime: 2015-05-02 16:10:04 friendly link: ? 目錄 1,思維導圖 2,MVC處理機制簡圖(講解路由解析) 3,默 ...
excel 下拉級聯(lián),重新選第一個,清空后一個已賦值,并且改變后一個下拉的內(nèi)容。
在前面的部分,設置下拉級聯(lián),我們已經(jīng)可以百度到很多視頻,我就不再多說,而我搞了一天解決 的,是在倆菜單都有值的情況下,重新選第一個下拉,后面那個值怎么清除,是一個事件調(diào)用.上圖. 其中"$H ...
Linux安裝Discuz
安裝lamp環(huán)境 安裝參考 安裝Discuz 1.進入官網(wǎng) 2.進入Discuz! 程序發(fā)布 3.選擇最新版本 4.進入git地址 5.克隆下載 5. 確認Apache中的DocumentRoot配置 ...
Linux之vi/vim編輯器
1.概述 所有的Unix like系統(tǒng)都會內(nèi)建 vi 文本編輯器,其他的文本編輯器則不一定會存在,但是目前我們使用比較多的是 vim 編輯器. vim具有程序編輯的能力,可以主動地以字體顏色辨別語法的 ...
Java Iterator的一般用法
Iterator(迭代器) 迭代器是一種設計模式,它是一個對象,它可以遍歷并選擇序列中的對象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu).迭代器通常被稱為“輕量級”對象,因為創(chuàng)建它的代價小. Java中的I ...
使用jsplumb的一些筆記
歡迎就是需要使用jsplumb跟正在使用jsplumb的一起討論 歡迎私聊 1.關于jsplumb的connection的一些事件 ####connection拖動的事件 instance.bind( ...
總結(jié)
以上是生活随笔為你收集整理的网页与服务器时间不一致,js解决客户端与服务器时间不一致的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python使用scipy简单求解线性规
- 下一篇: XMPP 客户端和服务端