我有一个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
转换为用户的时区。
所以问题是,我怎样才能确保两个用户同时获得彼此约会的时间?
答案 0 :(得分:1)
如果您希望他们两个都看到显示的相同时间,那么以UTC时间显示他们两个时间表,他们会看到同样的事情。
如果您希望他们看到他们理解的时间,那么请在他们自己的时区显示约会时间,并接受它对不同时区的用户的显示方式不同。
答案 1 :(得分:0)
它只是不可能,它们生活在不同的时区,当A在17:00时B可以在21:00,所以如果它必须在不同的时区同时发生,那么预约有不同的时间是正常的。
答案 2 :(得分:0)
如果您正在谈论的会议不是虚拟的(如Skype通话),而是物理会议,那么它也有一个物理位置。这意味着该位置或至少是其时区应该是约会的一个参数。
然后,您可以在会议地点的时区中同时显示两个参与者,并忽略其首选项中的时区。但为避免混淆,我还会明确显示会议的时区。