2个应用程序2个时区,我可以围绕此编程吗?

时间:2010-02-24 14:41:00

标签: windows time

我几乎觉得不得不提出这个问题,但我陷入了不幸的境地。

我们急于提供一个非常快速和肮脏的临时解决方案。我们需要运行2个第三方应用程序(幸运的是不能同时运行)。应用程序严重依赖于时间。一个需要GMT而另一个需要BST(英国夏令时)。所以在英国夏令时,格林尼治标准时间和BST是一个小时的不同。

我们想编写一个可以在启动相关应用程序之前更改系统时间的小应用程序。事实证明这比声音要困难一些。主要问题是在更改之前你无法知道时间是否正确。如果没有我们的应用程序正常退出(电池问题等),笔记本电脑可能已经关闭。

我们能够通过网络与服务器同步时间。但我一直无法确定何时发生这种情况。我发现有一个WM_TIMECHANGED窗口消息在设置时间时被广播。所以这可以用。

我们还可以在登录时显示一条消息并让用户验证开始时间,但是用户很快就会对此视而不见,或者没有意识到重要性。


A working example of this would be:
1: Laptop set to BST (Current time is 13:00)
2: Open app one (GMT) time will change to 12:00
3: Close app one (GMT) time will change to 13:00
4: Open app one (BST) time will remain at 13:00
5: Close app one (BST) time will change to 13:00

有没有人有任何聪明的想法?

3 个答案:

答案 0 :(得分:0)

在VM中运行一个应用

答案 1 :(得分:0)

您可以将时间与应用内的服务器同步吗?然后你会知道它已经同步并且时间是正确的。由于您知道服务器的时区,因此您可以根据正在运行的应用程序调整时间。

修改 由于您不能总是访问网络,您必须假设时间是正确的(即您无法更改)如果应用程序正在调用GetLocalTime(而不是GetSystemTime),那么您可以更改时区而不是时间来调整GetLocalTime的结果。

如果应用程序正在调用GetSystemTime(因此您必须更改时间),则需要一个标记(例如磁盘上的文件)告诉您的应用程序您已更改时间并且无法将其更改回来(由于意外终止)。这样你总会知道时间是正确的(没有标记存在)或时间被移动(标记存在)

答案 2 :(得分:0)

实际上并不是一个解决方案,但我们最终解决了两个应用程序的问题。

由于