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

问题描述:

我几乎觉得肮脏不得不问这个问题,但我被困在一个不幸的位置。2个应用程序2个时区,我可以编程吗?

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

我们想写一个小应用程序,可以在启动relavent应用程序之前更改系统时间。这被证明比声音要困难一些。主要的问题是,在改变之前你永远不知道时间是正确的。笔记本电脑可能在我们的应用程序正常运行(电池问题等)时已关闭。

我们可以通过网络与服务器同步时间。但是我一直无法确定这是什么时候发生的。我发现有一个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 

没有人有任何巧妙的构思?

+0

Naanook喜欢从失去的男孩的狗? :) – Layke 2010-02-24 14:48:51

实际上并不是一个解决方案,但是我们的工作都是围绕这两个应用程序进行的。

谢谢

在VM中运行一个应用程序

+0

我考虑过这个。但不幸的是,这些应用程序使用硬件与另一个系统连接另外我们的用户会感到困惑。 – Nanook 2010-02-24 14:46:54

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

编辑: 因为你不能总是访问你要承担时间的网络是正确的(即你不能改变它),如果应用程序在呼唤GetLocalTime(而不是GetSystemTime),那么你可以改变而不是时间来调整GetLocalTime的结果。

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

+0

只是为了让事情变得困难,笔记本电脑并不总是能够访问网络。我开始认为这是不可能的。但实际上改变时间非常简单,嘿 – Nanook 2010-02-24 15:15:45