2012-01-01 73 views
1

我需要一个计时器我正在做的网站。有一些我以前使用过的Timer,(只在Windows窗体和WPF应用程序中) - 而不是在Web开发中。所以我不太确定哪个Timer最适合在网页中使用,也是最准确的。准确的计时器类

我有几个要求,它们是:

  1. 它必须尽可能准确
  2. 它需要基于一个时间段是一个定时器,即:2:00:00

像计时器上竞价的网站是如何工作的种类。

我不找任何样品(但如果你已经有了一些周围铺设的地方,将不胜感激) - 我只是不知道在哪里看,或什么人会是这个职位的最佳一个。

+1

如果你正在寻找一个C#类,你使用的timer类与javascript或AJAX没有任何关系。 – 2012-01-01 04:57:49

+0

'DateTime.UtcNow'有什么问题吗?这听起来像只是一个网站。客户端对服务器的延迟意味着您可能不需要保持时间比一秒钟的大部分时间更准确。 – 2012-01-01 05:23:06

+0

http://stackoverflow.com/questions/1485839/high-performance-timer-vs-stopwatch – kenny 2012-01-01 13:50:00

回答

2

如果Web开发你的意思是JavaScript的你可以使用Date对象的毫秒当前时间。

精度水平取决于浏览器和/或装置。

下面是用它来分析的例子:

var startTime = new Date().getTime(); 
// some long running operation 
var endTime = new Date().getTime(); 
var ellapsedMilliseconds = endTime - startTime; 
1

像如何将这些计时器上竞价的网站工作的新形式。

像那样的计时器将使用大致准确的JavaScript客户端脚本来产生时钟,但结果需要被验证服务器端是可信的(例如,你不想要我送你一个HTTP请求说,我真的 eBay项目上的最后一个出价者没有检查它对我不能欺骗的东西)。

一个简单的定时器可以只依靠setTimeout()setInterval()。他们并不是真正的确切,但他们会在大致足够接近大多数用途的时候开火。

要进行合理准确的客户端倒计时,更新客户端时钟:

  • 设置一个起始日期变量
  • 检查当前的日期使用setInterval()
  • 每100ms比较不同,看看是否已经过了一段时间
  • 当时间已过(并确保致电clearInterval())时执行一些操作

同样,你如果你希望他们能防篡改必须验证定时器结果的服务器端。您可能会非常经常地与服务器进行异步通信,或者仅在达到倒计时时进行通信。

+0

感谢您的详细解答@Tim M,您肯定给了我一些想法,并且足以让我获得我开始。再次感谢! – Jason 2012-01-01 06:10:59

+0

@Jason - 没问题!祝你好运。 – 2012-01-01 06:15:13