2010-09-30 68 views
1

夥計! 我正在開發一個有時間限制的在線拍賣。BidSystem,網上拍賣,時間問題

結束時間段只適用於一個開放拍賣

登錄網站後,我顯示剩下的時間進行公開競價。時間以這種方式計算:

EndDateTime =拍賣結束的日期和時間;
DateTime.Now()=當前日期和時間

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

在JavaScript中,我更新留下的時間:

timeLeft=timeLeft-1

的問題是,當我在同一時間從不同的瀏覽器登錄瀏覽器顯示出不同的倒計時。

請幫幫我!

+0

你的js看起來像什麼? – bzlm 2010-10-01 12:04:28

回答

1

我想總會有幾秒鐘的差異,因爲服務器處理時間和下載頁面所需的時間。

最好的方法是實際上發送結束時間到瀏覽器並計算在JavaScript中剩餘的時間。這樣的時間應該是相同的(當然在同一臺機器上)。

+2

+1,但我會將結束時間和當前日期時間發送到瀏覽器。這樣你就不依賴於客戶機與世界其他地方同步..他們經常不是 – NotMe 2010-09-30 21:01:07

+0

另外,我會有一個ajax請求,每隔10秒左右從服務器獲取一次更新。通過這種方式,如果客戶端瀏覽器的定時器分辨率不足,那麼它會很快恢復正常。 – NotMe 2010-09-30 21:02:20

+0

確實需要考慮時區差異,非常重要! – CyberDude 2010-09-30 21:02:47

0

這可能是在不同的速度, 或setInterval的將觸發取決於循環

我會去了解一下這兩個

1

羅馬時間略有不同的JavaScript加載一個問題,

我看了一下eBay(他們對這件事情知道一兩件事:)),並注意到一旦該項目在最後90秒內,GET請求每2秒觸發一次以通過一個更新JavaScript中的變量json響應。你可以看看這個裏面的螢火蟲/提琴手,看看它做了什麼。

這裏是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 
     } 
     ] 
    } 
} 

你可以做你的代碼中類似的東西。

[編輯] - 進一步看eBay的代碼,本書雖然它只能運行在最後90秒密集的GET請求,同樣JSON當頁面初始加載以及上面添加。然後,在3分鐘左右,GET請求每10秒運行一次。因此,我假設相同的JavaScript是針對該結構運行的,無論它是否大於90秒。

+0

我認爲這個信息是無用的:) – 2010-10-04 08:32:12