Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在不同时区之间比较时间的最佳方法_C#_Asp.net_.net_Wpf - Fatal编程技术网

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

C# 仅在不同时区之间比较时间的最佳方法,c#,asp.net,.net,wpf,C#,Asp.net,.net,Wpf,我目前正在做一个项目,要求用户(在他们各自的时区)为他们全天收到的某些通知设置“截止”时间。例如,用户会说他们不希望在上午8:00之前和晚上7:30之前收到警报。该用户位于CST(保存每个用户的时区信息)中,“服务器”位于EST中。服务器是所有逻辑决策发生的地方,应该通知用户,等等 转换时间部分仅用于比较的最佳实践是什么 我目前的想法是使用用户设置的时间,比如“7:00AM”,创建一个FullDateTime对象并将其存储为.ToUniversalTime()。在服务器上,我可以将DateTim

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

转换时间部分仅用于比较的最佳实践是什么

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

是否有人提出了“更好”的解决方案,或者有人提出了类似问题的建议


谢谢

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

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


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

最好的方法是将其转换为UTC,然后进行比较我会说您的做法是正确的,但最好将转换为UTC时间(而不是本地时间)并与UTC时间进行比较。.ToUniversalTime()会转换为GMT/UTC。不确定上一篇评论的要点。不过,我会转换为服务器的本地时间,因为这会简化事情。这里有一个我喜欢的很酷的日期/时间库,也许它会对项目的某些部分有所帮助:您将日期存储为UTC,这是一个好的开始。如果时间是本地的,您希望将其转换回本地,然后进行比较。不久前我实现了类似的东西,这正是我所做的。