比较不同时区之间的时间的最佳方式

时间:2013-10-14 15:39:03

标签: c# asp.net .net wpf

我目前正在开展一个项目,该项目要求用户(在各自的时区)为他们在一天中收到的某些通知设置“截止”时间。例如,用户会说他们不希望在上午8:00之前和晚上7:30之前没有提醒。此用户位于CST(保存每个用户的时区信息),“服务器”位于EST中。服务器是应该通知哪个用户的所有逻辑决策的地方,等等。

仅为比较目的而转换时间部分的最佳做法是什么?

我目前的想法是花费用户设置的时间,比如说“早上7点”,然后创建一个完整的DateTime对象并将其存储为.ToUniversalTime()。在服务器上,我可以将DateTime对象转换为本地时间,并仅比较时间部分。

是否有人有解决类似问题的“更好”的解决方案或可能的任何建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议您将最短时间和最长时间存储为当地时间,不包括日期。您还需要存储用户的常规时区信息,例如“中央时间”,而不是CST或CDT。

当您准备好确定发送通知时,请将当前UTC时间转换为用户的本地时区,并将存储的时间范围与转换时间进行比较。

尝试从存储的时间信息创建完整的日历日期在某些情况下会出现问题,特别是夏令时更改。通过从UTC转换为用户的本地时间进行比较,可以避免这个问题。