您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> 一个关于时钟的延迟问题

一个关于时钟的延迟问题

来源:网络整理     时间:2016/6/11 4:54:40     关键词:时钟,延迟

关于网友提出的“一个关于时钟的延迟问题”问题疑问,本网通过在网上对“一个关于时钟的延迟问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:一个关于时钟的延迟问题
描述:

有这样一个项目,其在一天的很多个固定时间点执行一些逻辑,比如在8:10、8:13、8:15、9:02、9:08、9:09、
10:01、10:18..................
获取本地时间肯定是不行的,因为项目不可能因为用户修改电脑时间而影响使用。现在就是获取网络时间的问题,如果在一天中的时间点很多,高频率地去获取网络时间,是不是影响效率呢,既占带宽,又占CPU的。
有没有这样一种可能,就是项目在启动之初,就获取一次网络时间,然后,在内存中有一个时钟,从获取到网络时间开始就走,之后,就直接从这个内存时钟获取北京时间,这样行不行呢?该如何做呢?
本人按照这个帖子:CSDN的1楼朋友的办法,定义一个datetime dt 变量,初始化的时候请求服务修改变量为北京时间..
实例化timer 1s执行一次.
dt=dt.add秒(1);
以后取值的判断 直接拿dt就行了..
但是,我按照这种办法进行了测试,开始还行,时间长了,dt的时间和网络时间就对不上了,十几分钟的话,就会相差十几秒,这个对项目的影响就大了。
在此贴,寻求更好的办法


解决方案1:

1、项目在启动之初,就获取一次网络时间和本地时间。
2、计算本地时间和网络事件的误差及折算到本地时间的定时时刻。
3、锁定本地时间,不允许修改。VB6上好像有这个控件,能够知道用户修改时间事件。

解决方案2:

还有一个办法是将服务器设置为时间服务器
然后在客户机上将时间服务器指向本地服务器,并且设置1分钟或10秒就更新一次本地时间
也不产生外网流量

解决方案3:

如果有服务器的话,可以访问服务器时间啊.
尤其服务器上有数据库的话,通过SQL语句查询数据库时间是很简单的工作,而且也不产生对外流量

解决方案4:

定时取得网络时间,记录偏差。
多长时间取得一次网络时间,找到平衡点即可
如果时间是非常critical的话,全部使用网络时间也没有关系,流量应该不大。

解决方案5:

引用 5 楼 dfg46b5 的回复:
主要是害怕,程序启动了,换算了网络时间和本地时间的差值之后,诶,用户改本地时间了...........
如果检测到用户修改了时间,可以重新获取网络时间啊。
如果你觉得做不来,就不要纠结本地时间了,多访问几次网络也不是什么大事。 解决方案6:

稍微懂点脑子就会了   -->   稍微动点脑子就会了
而且肯定比解二元二次方程组简单多了。就是需要你在四个或者三个时间点去记录时间,然后进行两次加减法和除法而已。

解决方案7:

关于“如何计算本地时间差错”,你应该看看ntps简单协议。他其实就好像是“二元二次方程组”一样简单,稍微懂点脑子就会了。
你可以访问一次服务器,获取本地时钟跟服务器的偏差。然后如果你想在服务器的某个时间处理,那么预先将这个时间换算为本地(偏差了的)时间就行了。

解决方案8:

你可以使用一个TImer监控本地时间,被修改的话计算一下时间差就知道了。
你可以那网络时间与本地时间相减得到时间差,以后都按本地时间算差值。

解决方案9:

可以每隔1、2分钟获取一次网络时间,不断修正你的累加


以上介绍了“一个关于时钟的延迟问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1640555.html

相关图片

相关文章