0

我的应用程序中有一个函数,我将 Unix Epoch 的毫秒数与当前时间进行比较:

 DateTime.Now

这导致时间不同,即:剩余 2 分钟或剩余 4 分钟。

我发现的问题是一些用户没有在他们的手机上正确设置时钟,或者故意将时钟稍微提前。

这会导致上面的计算不正确。

有没有办法解决这个问题,即;从某人那里读取“实时”时间。为方便起见,时间计算是在电话而不是服务器端完成的。

4

1 回答 1

6

IMO您的问题不是实施而是设计。

由于多种原因,用户的时间可能会出错:用户选择、法律(例如在俄罗斯,定义时区和夏令时的法律每隔几年就会更改一次,这样政府就会提醒人们它仍然存在)或技术(硬件故障,移动运营商的设备设置不正确)。

您有 3 个选项来解决:

  1. 让服务器返回 TimeSpan 而不是 DateTime。

  2. 让服务器获取客户端的当前时间,并在客户端的时钟中返回 ETA。

  3. (最复杂,仅对时间非常敏感的任务需要,例如“日食+月食计划”应用程序)在启动和激活您的应用程序时,与您的服务器协商客户端设备上 UTC 日期+时间之间的时差,和服务器的时钟。

于 2013-01-16T23:44:22.977 回答