仅在不同时区之间比较时间的最佳方法

本文关键字:时间 最佳 方法 比较 之间 时区 | 更新日期: 2023-09-27 18:35:13

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

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

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

有没有人有"更好"的解决方案,或者可能从解决过类似问题的人那里得到任何建议?

谢谢!

仅在不同时区之间比较时间的最佳方法

我建议您将最小时间和最长时间存储为本地时间,没有日期。您还需要存储用户的一般时区信息,例如"中部时间",而不是 CST 或 CDT。

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

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