我同时记录了X服务器时间和js时间。 我得到了这些价值观:
"gdk_x11_get_server_time()": 4413960
"js time-new Date().getTime():" 1425529054961
无论如何我可以通过javascript制作x服务器时间吗? (所以上面我试图从js中获取4413960
而不需要使用ctypes或其他东西并使用gdk_x11_get_server_time ()
?
由于
以下是来自x11然后来自js的一些时间转储,其中js时间为toLocaleString at start。它显示它们在10秒内间隔0,10和20秒。
"time now is:" "10:26:39 PM" "gdk_x11_get_server_time:" 173753 "new Date().getTime():" 1425536800642
"time now is:" "10:26:50 PM" "gdk_x11_get_server_time:" 183757 "new Date().getTime():" 1425536810644
"time now is:" "10:27:00 PM" "gdk_x11_get_server_time:" 193758 "new Date().getTime():" 1425536820644
更多数据:
study set gdk time js time js to string gdk time diff js time diff stamp diff (s)
a 173753 1425536800642 10:26:39 PM
a 183757 1425536810644 10:26:50 PM 10004 10002 11
a 193758 1425536820644 10:27:00 PM 10001 10000 10
b 771689 1425537398575 10:36:38 PM
b 771690 1425537398576 10:36:38 PM 1 1 00
b 781690 1425537408576 10:36:48 PM 10000 10000 10
b 791690 1425537418576 10:36:58 PM 10000 10000 10
b 801690 1425537428576 10:37:08 PM 10000 10000 10
b 811690 1425537438576 10:37:18 PM 10000 10000 10
b 821690 1425537448576 10:37:28 PM 10000 10000 10
b 831691 1425537458577 10:37:38 PM 10001 10001 10
b 841691 1425537468578 10:37:48 PM 10000 10001 10
b 851691 1425537478577 10:37:58 PM 10000 9999 10
答案 0 :(得分:0)
希望这有助于:)
var timestamp = Math.floor( Date.now() / 1000);
答案 1 :(得分:0)
我们可以判断单位为ms,但偏移量未知。似乎服务器时间是自当地午夜以来的ms。如果我们只能捕获一个servertime快照,我们可以记住偏移量并随意计算服务器时间戳。下面简单代码的唯一警告是生成的时间戳功能需要每24小时至少运行一次,或者您可以定期从新服务器时间戳重新生成新计时器以对抗DST,滞后,时钟调整等
使用服务器时间戳调用getTimer(),它返回一个与Date.now()类似的新函数,但(希望)返回服务器时间戳而不是UTC时间戳(+/-任何延迟)。
function getTimer(serverTime){
var now=Date.now(), max=1000*60*60*24;
serverTime*=1; //force number
return function(){
var diff=(Date.now()-now)+serverTime;
if(diff<max) return diff;
now+=max;
return (Date.now()-now)+serverTime;
};
}
var serverClock=getTimer(4413960); // make a new timer function
setTimeout(function(){console.info(serverClock()); }, 5000);
console.info(n=serverClock()); // should be ~5000 more than first time
编辑:好的,如果它没有每24小时重置一次,那么每次重置时你都需要手动运行它。如果这对您来说很简单,那么您可以稍微简化一下发生器:
function getTimer(serverTime){
var now=Date.now();
serverTime*=1; //force number
return function(){
return (Date.now()-now)+serverTime;
};
}
您可能希望每天重新同步一次或重新启动,但至少在此情况下,您不需要每次都打扰服务器,您可以在本地对其进行一些可靠性计算。