【问题标题】:Timezones in calendar controls日历控件中的时区
【发布时间】:2012-08-09 18:45:31
【问题描述】:

我们有一个安排约会的系统,总部设在英国。项目经理使用它来安排英国员工和澳大利亚员工的约会。

PM 会在周一上午 9 点进行预约,但这与地点无关;即当英国工作人员看到它时,他/她将其阅读为英国时间上午 9 点,而当澳大利亚工作人员阅读它时,他们将其阅读为澳大利亚时间上午 9 点。

我编写了一个 Outlook 插件来显示这些预订并允许选择它们。问题是当插件在澳大利亚运行时,它会看到日期时间来自英国并添加了时差。因此,澳大利亚员工的任命在不应该的时候被抵消了。

我正在使用 Infragistics Schedule 控件,想知道确保上午 9 点预约在所有地点显示为上午 9 点并且不应用偏移量的最佳方法是什么?

谢谢, 德拉米

【问题讨论】:

    标签: c# datetime calendar timezone


    【解决方案1】:

    对我来说,最好的方法是始终在代码中的任何地方使用 UTC 日期时间。只有在演出时,您才能切换(或不切换)到合适的时区。

    http://msdn.microsoft.com/en-us/library/system.datetime.aspx

    使用 DateTimeKind 枚举 (http://msdn.microsoft.com/en-us/library/shx7s921.aspx) 定义语言环境/UTC

    始终使用 DateTime.ToUniversalTime() 以获取 UTC 格式的 DateTime (http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx)

    (当然 ToLocalTime() 也存在)。

    您应该进行一些测试以检查一切是否符合预期。

    【讨论】:

    • 谢谢 - 所以来自数据库的查询是一样的,但是在 C# 中处理日期时,我会使用 UTC 日期时间?
    • 约会并不总是一个好主意。例如,如果会议始终是“英国时间下午 3 点”,您需要记录下来 - 因为这意味着 UTC 时间会在一年中发生变化。这也意味着即使时区规则发生变化,在未来很长一段时间内安排的事情仍然会有正确的本地时间(这是用户几乎总是关心的)。
    • 那么你推荐 Jon 什么?我需要确保 PM 可以在上午 9 点开始预约,无论预约在哪里。我还需要确保无论在哪里查看约会都显示为上午 9 点。
    • 你是对的,但即使是 gmail 也没有这样做......所以恕我直言,正确处理 UTC 并使用良好的时区显示更容易。显示正确的当地时间是 UI 控件的工作。
    • 此外,在国际日期时间的情况下,UTC 是唯一可靠的!正是因为本地时间是建立在它之上的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多