在這裏,我正在開發一個帶有java套接字的項目,並且在服務器和客戶端之間執行正確的時間同步時遇到問題。 我會用一個簡單的例子來說明問題:在客戶端/服務器java套接字之間同步時間
服務器運行在格林尼治標準時間,並保持與各個項目的數據庫。其中一些商品是特價商品,但這些商品在到期前有時間限制。
因此,讓我們說,服務器時間現在9:00 AM(北京時間)並沒有在10:00(GMT)結束要約項。
客戶可以在比服務器不同的時間和時區。所以我們可以說,現在客戶端時間是8:00 AM(GMT-1),我走的時候,把它調整到客戶的時區,並發現它在1小時內結束於9:00 AM(GMT-1)即。
問題:如何計算用戶設置了自定義時間的剩餘時間。
例如,在上述客戶端設置手動的時鐘超前半小時,即8:30 AM(GMT-1)。如果您只是進行時區轉換,那麼該項目仍將以9:00(GMT-1)結束,因此要約完成的時間不正確(30分鐘)。
有人可能會說,一個可能的解決方案是設置客戶端問秒時從服務器,而不是確切日期結束的時間。但是我想在客戶端實現類似秒數的倒計時。 (如果報價在60秒內結束,則界面將變爲60,59,58,...,1,0)。因此,向服務器發送請求每秒以獲得剩下的時間不是網絡高效的。
還有一件讓我擔心的事情是,如果您確實要求「時間離開秒」的情況,那麼在慢速網絡上服務器的響應不會立即發生,所以當客戶端收到結果已經關閉了。
在測量一個基本原則是:如果絕對值是不準確的(甚至是未知的),用相對值,在這種情況下,這將是一次差異。 – alk