2012-08-13 38 views
1

我们有一个安排约会的系统,位于英国。项目经理使用它来安排英国工作人员以及澳大利亚工作人员的约会。日历控件中的时区

PM将在周一上午9点​​的时间表中安排一个预约,但与位置无关;即当一名英国工作人员将其视为英国时间上午9点并且当一名澳大利亚工作人员阅读时,他们将其作为上午九点的时间阅读。

我写了一个Outlook插件,显示这些预订并允许选择它们。问题是,当插件在澳大利亚运行时,它会看到日期来自英国,并增加了时间差异。因此,澳大利亚工作人员在不应该得到任命的情况下抵销了他们的任命。

我正在使用Infragistics Schedule控件,并想知道最好的方法是确保9am约会在所有位置上午9点出现,并且不应用偏移量?

感谢, Drammy

回答

1

对我来说,最好的办法是始终在代码中任何地方使用UTC日期时间。只有当显示你可以切换(或不)到良好的时区。

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

区域设置/ UTC使用DateTimeKind枚举(http://msdn.microsoft.com/en-us/library/shx7s921.aspx

始终使用DateTime.ToUniversalTime(),以获得日期时间在UTC(http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx

(定义当然ToLocalTime()也存在)。

你应该做一些测试,以检查一切看起来如预期。

+0

谢谢 - 所以从数据库的查询将是相同的,但在C#中处理日期时,我会使用UTC日期时间? – Drammy 2012-08-13 14:10:14

+1

并不总是约会的好主意。例如,如果会议总是“英国时间下午3点”,则需要记录该时间 - 因为UTC时间的含义在一年中会发生变化。这也意味着,即使时区规则发生变化,即将在未来进行很长一段时间的事情仍将具有正确的本地时间(这是用户几乎始终关心的)。 – 2012-08-13 14:10:22

+0

那么你推荐Jon?我需要确保PM们可以预约9点开始的预约,无论预约在哪里。我还需要确保约会上午9点,无论它在哪里看。 – Drammy 2012-08-13 14:21:26