繁体   English   中英

无法在Win CE设备上设置时间

[英]Unable to set time on Win CE device

我创建了一个软件,其中时间非常重要。 因此,每次传输一些数据时,我也在wince设备上设置了时间。 我通过套接字DateTime.Now.Ticks传递并设置时间

[DllImport(“ coredll.dll”)]专用外部静态uint SetSystemTime(ref SYSTEMTIME lpSystemTime);

在运行服务器应用程序的PC以及设备上,将时区正确设置为GMT + 1。 设备上的HomeDST为0。

我的问题是,操作系统时间与软件时间总是有一个小时的差异。 我使用检索时间

[DllImport(“ coredll.dll”)]私有外部静态无效GetSystemTime(ref SYSTEMTIME lpSystemTime);

例如,在设备的右上角,我看到的是9:12,而在应用程序中是8:12。

有人对此有解释/解决方案吗? 这将非常有帮助,因为不幸的是,应用程序已在实时系统中使用,并且这带来了巨大的问题...

SetSystemTime以UTC时间(请参阅http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms724942(v=vs.85).aspx

因此,如果您从服务器获取的时间是+1,则应在将其传递给SetSystemTime()之前在其上调用.ToUniversalTime()。

通常,为了简化您的生活,我建议您在所有地方都将所有时间都保持为UTC,除了在UI中显示时-这是将其转换为当地时间的时间。

您是否使用DST? 如果您确实尝试禁用它,然后查看问题是否仍然存在。 我遇到一个问题,即同时使用SetSystemTime()和SetLocalTime()设置系统时间后,时钟可能会出错几个小时。

事实证明,设备制造商没有在驱动程序中正确实现DST,因为实时时钟只能处理本地时间。 至少那是他们的解释。 关闭DST解决了我的问题,除了您必须每年为夏令时手动两次调整时钟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM