日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js解决客户端与服务器时间不一致的问题

發布時間:2024/8/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js解决客户端与服务器时间不一致的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

引出

最近在寫一個項目時,要根據時間進行不同的展示,直接用new Date().getTime()獲取當前時間,結果就出問題了。有些用戶擅自修改自己的本地時間,導致獲取到的時間并不是當前時間,尷尬。

思路

既然如此,首先想到的就是讓本地時間以服務器的時間為基準,只要讓服務器傳一個時間戳過來就可以了。那如何實現動態獲取時間呢?畢竟不能每次獲取時間都到服務器去要吧。一個粗糙的思路,只要知道現在與獲取服務器時間過了多久,然后動態的相加就可以了。那如果記錄時間差呢?

剛開始我想的是,記錄獲取服務器時間時的時間點(gainServerTime),將當前時間點與gainServerTime相減,就可以得到經過了多久。但是,如果用戶在進入頁面之后修改時間的話,就會得到錯誤的時間差,并不能解決問題。

然后我想到了定時器,記錄時間秒數experienceTime,每秒+1,固然會犧牲一定的性能,但問題是我沒想到更好的辦法。

實現

/*** 獲取當前時間的對象* @param serverTime* 服務器時間戳(秒) */ function GetNowDate(serverTime){this.serverTime = serverTime || new Date().getTime();// 記錄經歷時間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(){// 設置定時器,動態增加時間var _this = this;setInterval(function() {_this.experienceTime++;}, 1000); };

當然,看著就有很多問題,之后遇到再完善吧

碼云地址 https://gitee.com/hujingnb/jsTool

?

總結

以上是生活随笔為你收集整理的js解决客户端与服务器时间不一致的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。