安排不同时区的约会

时间:2014-04-21 23:24:28

标签: c# datetime timezone

我有一个asp.net-mvc应用程序,可以与世界各地的人安排约会。这些约会都以UTC格式保存在数据库中。在注册期间,用户已选择他们居住的时区。因此所有约会都显示在他们的时区中。

话虽如此,情况就是这样。如果住在时区W. Europe Standard Time的用户想要在5月1日(2014年5月1日)下午1点与住在时区Eastern Standard Time的某个人预约直到下午5点。

时间将转换为UTC格式,并与数据库中的现有约会进行比较,无论是否可能(例如,用户没有其他约会)。如果可能的话,约会将被持久保存到数据库中供两个用户使用。

现在这里有趣的部分。生活在W. Europe Standard Time的用户将在他的日程安排中看到1点钟 - 下午5点(均在下午),而住在Eastern Standard Time的用户将看到7点钟 - 11点钟他的日程表中的早晨时钟(时区之间有7小时的差异)。

这是因为当约会在视图中检查他们的日程安排时,约会全部从UTC转换为用户的时区。

所以问题是,我怎样才能确保两个用户同时获得彼此约会的时间?

3 个答案:

答案 0 :(得分:1)

如果您希望他们两个都看到显示的相同时间,那么以UTC时间显示他们两个时间表,他们会看到同样的事情。

如果您希望他们看到他们理解的时间,那么请在他们自己的时区显示约会时间,并接受它对不同时区的用户的显示方式不同。

答案 1 :(得分:0)

它只是不可能,它们生活在不同的时区,当A在17:00时B可以在21:00,所以如果它必须在不同的时区同时发生,那么预约有不同的时间是正常的。

答案 2 :(得分:0)

如果您正在谈论的会议不是虚拟的(如Skype通话),而是物理会议,那么它也有一个物理位置。这意味着该位置或至少是其时区应该是约会的一个参数。

然后,您可以在会议地点的时区中同时显示两个参与者,并忽略其首选项中的时区。但为避免混淆,我还会明确显示会议的时区。