从Windows Phone获取"真实"时间

Dan*_*ell 0 c# .net-4.0 windows-phone

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

 DateTime.Now
Run Code Online (Sandbox Code Playgroud)

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

我发现的问题是,有些用户没有在手机上正确设置时钟,或者故意将它略微向前推.

这导致上面的计算不正确.

有没有办法围绕这个,即; 从别人那里读"真实"的时间.时间计算是在电话而不是服务器端完成的,以方便使用.

Soo*_*nts 6

IMO你的问题不是实现而是设计.

用户的时间可能是错误的,原因有多种:用户选择,合法(例如在俄罗斯,法律定义时区和夏令时每隔几年变化一次,这样政府提醒人们它仍然存在),或技术(硬件失败,移动运营商设备的错误设置).

您有3个选项如何修复:

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

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

  3. (最复杂,仅对非常时间敏感的任务需要,例如"Solar + Lunar Eclipse Schedule"应用程序)在启动和激活您的应用程序时,与您的服务器协商有关客户端设备上UTC日期+时间之间的时差,和服务器的时钟.