在这里,我正在使用java套接字开发一个项目,我在服务器和客户端之间实现正确的时间同步时遇到了问题。 我将用一个简单的例子来描述问题:
服务器在GMT上运行并保留包含各种项目的数据库。其中一些项目是特价商品,但这些商品在到期前有时间限制。
所以我们说 服务器时间 现在 9 :00AM(格林尼治标准时间)并且有一个优惠项目在 10:00 AM(GMT)结束。
客户端可能与服务器位于不同的时间和时区。因此,假设现在客户端时间上午8:00(GMT-1),我可以花时间将其调整到客户的时区,并发现它在上午9:00结束(GMT- 1)即1小时内。
问题:如何计算用户设置自定义时间的剩余时间。
例如,上述客户端手动将时钟设置为提前半小时,即 8:30 AM(GMT-1)。如果您只是进行时区转换,该项目仍将以 9:00(GMT-1)结束,因此要约完成的时间是错误的(30分钟)。
可以说可能的解决方案是将客户端设置为从服务器询问剩余的时间,而不是确切的结束日期。但是我希望在客户端实现类似秒数的计数。 (如果报价在60秒内结束,界面将为60,59,58,...,1,0)。因此,向服务器发送每秒请求以获得剩余时间并不具备网络效率。
让我担心的另一件事是,如果你确实采用了请求“以秒为单位的时间”的情况,在慢速网络上服务器的响应将不会立即出现,所以当客户端收到结果时已经过时了。