0

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

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

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

有没有人有一个“更好”的解决方案或可能来自解决类似问题的人的任何建议?

谢谢!

4

1 回答 1

0

我建议您将最小时间和最大时间存储为当地时间,不带日期。您还需要存储用户的一般时区信息,例如“中部时间”,而不是 CST 或 CDT。

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

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

于 2013-10-14T16:12:42.963 回答