C#时区计算问题

标签 c# timezone

我有一个服务器应用程序正在处理不同时区的贷款。 服务器使用 UTC 运行,计划任务将在本地时间 08:00 在服务器上启动一个进程,并选择该时区的贷款进行处理。服务器必须检查每笔贷款,然后为某些贷款设置一个超时,该超时将在特定本地时间触发(根据夏令时进行调整),对于第二天 17:30 的论证,它需要计算 UTC 等效时间然后执行在达到超时之前需要经过的小时数、分钟数和秒数。

我认为问题在于将超时的业务需求转化为可配置的设置。此要求可能更改为当天的 17:30 或下周的 17:30。我需要一个解决方案(如果有的话)来应对在达到超时期间发生的夏令时变化。

最佳答案

所以您只需要将特定时区的本地时间转换为 UTC 时间(适用于超时等)?

使用TimeZoneInfo.ConvertTimeToUtc ,将本地日期/时间作为 DateTime 和相关的 TimeZoneInfo 传递。

值得注意的是,在 DST 更改前后,某些本地时间可能不存在,或者可能出现两次。对于大多数时区,这发生在本地时间清晨,因此它可能不会影响您的业务规则 - 但值得一提。如果需要,您可以使用 TimeZoneInfo.IsAmbiguousTimeTimeZoneInfo.IsInvalidTime 检测到这一点 - 虽然您需要在检测到它后确定要做什么,当然。

关于C#时区计算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209337/

相关文章:

c# - .net core with Docker Https 在不同端口映射时错误重定向

c# - 如何解析 XML 差异以仅显示差异

Mysql FROM_UNIXTIME 为 UTC

mysql - 在数据库中存储时区

javascript - 将时区设置为 GB 以供所有人查看

javascript - jquery gettime总是使时间早于4小时

c# - Roslyn 和 .NET 运行时版本

c# - 正则表达式模式数字后跟一个字符

c# - Thread.Sleep() 用于防止服务器过载

r - 日期、时区和 POSIXct