我有一个应用程序,我希望它有一个同步Windows系统时钟的功能,但只设置分钟,除非例如系统时间是13:58,时间服务器是14:02,在这种情况下,小时也应该更改。问题是,我不想使用时间服务器小时/天等,因为我希望用户能够设置时钟到任何时间(无论时区),但它仍然同步。
例如,即使windows时区是PST,并且用户在没有更改时区的情况下将时钟设置为5小时后,我也希望系统能够正确地同步,使其在未来5小时后保持同步。
有没有一种算法可以计算出是否应该根据分钟向前或向后设置小时,而不考虑任何时区因素?如果系统为15:59,服务器为16:02,则系统应设置为16:02,而不是15:02 (如果仅更改分钟数,则会设置为15:02)。如果系统为15:28,服务器为16:02,则系统应设置为15:02。我已经考虑了一段时间了,但似乎不知道该怎么做!
我已经有了获取时间服务器日期和时间以及系统时间的代码(我使用的是delphi),所以这只是一个计算如何处理它的问题。
耽误您时间,实在对不起。
发布于 2009-03-30 14:15:01
听起来您真正想要的只是同步客户机的UTC时间,使之与服务器的UTC时间相同,而不管服务器或客户机的时区是什么。
您需要根据UTC查找要获取和设置时间的API。
这可能不是你想要的,因为我没有完全理解你关于用户在未来5小时内设置他们的机器的问题……
发布于 2009-03-30 14:33:00
别忘了,有些时区不在小时界限之内……如果用户的时钟在13:30,而服务器在13:00,你怎么知道用户很简单,不是在纽芬兰,而是(比方说)蒙特利尔。
我认为Jon关于UTC的建议是可行的。
发布于 2009-03-30 14:37:08
获取服务器时间,减去N小时,设置本地时间。没有问题。
时间是一个实数。小时、分钟、秒等只是一种演示格式。
如果您必须在计算中包括时区,请使用my GpTimezone (description)。
https://stackoverflow.com/questions/697370
复制相似问题