BidSystem,在线拍卖,时间问题

时间:2010-09-30 20:46:04

标签: asp.net asp.net-mvc asp.net-mvc-2

家伙! 我正在开发一个有时间限制的在线拍卖。

结束时间段仅适用于一次展开的拍卖

登录网站后,我会显示公开竞价的剩余时间。时间以这种方式计算:

EndDateTime =拍卖结束的日期和时间;
DateTime.Now()=当前日期和时间

timeLeft= (EndDateTime - DateTime.Now()).Seconds()

在javascript中,我更新了剩下的时间:

timeLeft=timeLeft-1

问题在于,当我从不同的浏览器同时登录时,浏览器会显示不同的倒计时。

请帮帮我!

3 个答案:

答案 0 :(得分:1)

我想由于服务器处理时间和下载页面所需的时间,总会有几秒钟的差异。

最好的方法是实际将结束时间发送到浏览器并计算javascript中的剩余时间。这样的时间应该是相同的(当然在同一台机器上)。

答案 1 :(得分:1)

罗马,

我看了一下eBay(他们对这个东西知道了一两件事:))并​​注意到一旦项目在最后90秒内,GET请求每2秒被触发一次以更新变量javascript通过json响应。你可以看看这个内部的firebug / fiddler看看它做了什么。

这是一个它拉下来的json的例子:

{
   "ViewItemLiteResponse":{
      "Item":[
         {
            "IsRefreshPage":false,
            "ViewerItemRelation":"NONE",
            "EndDate":{
               "Time":"12:38:48 BST",
               "Date":"01 Oct, 2010"
            },
            "LastModifiedDate":1285932821000,
            "CurrentPrice":{
               "CleanAmount":"23.00",
               "Amount":23,
               "MoneyStandard":"£23.00",
               "CurrencyCode":"GBP"
            },
            "IsEnded":false,
            "AccessedDate":1285933031000,
            "BidCount":4,
            "MinimumToBid":{
               "CleanAmount":"24.00",
               "Amount":24,
               "MoneyStandard":"£24.00",
               "CurrencyCode":"GBP"
            },
            "TimeLeft":{
               "SecondsLeft":37,
               "MinutesLeft":1,
               "HoursLeft":0,
               "DaysLeft":0
            },
            "Id":160485015499,
            "IsFinalized":false,
            "ViewerItemRelationId":0,
            "IsAutoRefreshEnabled":true
         }
      ]
   }
}

您可以在代码中执行类似操作。

[edit] - 在进一步查看eBay代码时,尽管它只在最近90秒内运行密集的GET请求,但在页面最初加载时会添加与上面相同的json好。然后,在3分钟左右,GET请求每10秒运行一次。因此,我假设对该结构运行相同的javascript,无论是否> 90秒。

答案 2 :(得分:0)

这可能是javascript以不同速度加载的问题, 或者setInterval将在稍微不同的时间触发,具体取决于循环

我会调查这两个