Windows窗体的自定义日期时间选择器锁定到GMT时间

时间:2010-03-15 18:20:51

标签: c# datetime winforms datetimepicker gmt

  • 使用Visual Studio 2008,c#,。net 2.0。

我有一个包含调度UI部分的Windows窗体客户端应用程序,目前只在伦敦办公室设有标准日期时间选择器控件,所选时间保存在英国数据库(GMT)和基于伦敦的服务器上应用程序处理时间表。

需要将客户端推送到各个全球位置,香港,纽约等,并允许他们根据伦敦服务器上的GMT时间设置计划。

我在屏幕上会有一个标签,上面写着“笔记时间表是格林威治标准时间”我需要的是提供始终显示并与数据库服务器的GMT时间同步的日期时间选择器的好方法,无论其在何处客户端应用程序正在全球运行

关于如何实现这一目标的建议?感谢。

3 个答案:

答案 0 :(得分:2)

“GMT”时区不明确。在Windows上,它指的是伦敦等人的时区,包括夏令时调整。在皇家天文台的格林威治,它指的是匹配UTC而没有DST调整的时区。

显然,你想避免这种可能的混淆。当您要求用户自己进行转换时,您将获得大量错误。只有一种方法可以做到这一点,允许用户在当地时区输入时间。立即将其转换为UTC并将其发送到服务器。从服务器返回的任何内容都应该在显示之前的最后一刻转换回本地时间。

答案 1 :(得分:1)

DateTime对象能够使用.GetUTCXXX()从本地时间偏移到UTC / GMT时间,这将根据运行时中使用的当前全球化/本地化设置从本地时间实例转换为UTC偏移量

此外,Globalization.CultureInfo中还有一个时区对象,可用于将UTC / GMT时间调整为本地时间。

如果服务器是可联系的,您可以在服务器上获取本地时间并以这种方式更新您的日期选择器,但如果您只需要对计划进行“近似”时间而不需要该级别的精度,这可能会有点过分

答案 2 :(得分:0)

我不确定这是否能解决您的问题,但请查看Any+Time(TM) JavaScript Library。跳过有关Date / Time小部件的部分,查找有关AnyTime.Converter的信息,AnyTime.Converter是一个将字符串转换为Date对象并返回的对象。它现在包括UTC Offsets / TimeZones的格式说明符,以及覆盖本地时间的选项(请查看UTC Offsets上的docs部分,其中包括utcFormatOffsetImposed和utcParseOffsetAssumed的选项)。下一节还有一个例子,解释了如何获取当地时间并在GMT中显示它。如果您对此有任何疑问或问题,请通过联系页面提交,以便快速关注。我希望这有帮助!