日期时间偏移量更改到特定时区的偏移量



我想在我的数据库中保存一个 DateTimeOffset 作为我提供的时区

当我从应用程序的前端获取日期时,它将作为 UTC 时间传入。

在数据库中,我不要这个:2020-06-24 20:00:00.000000 +00:00,我想要这个:2020-06-24 16:00:00.000000 -04:00

我想这样做的原因是,SQL Server 中有一些不考虑时区的旧函数和存储过程,但我们仍然希望在正确的日期查找内容。例如:美国东部标准时间 6 月 25 日晚上 11 点发生的事件,当前将保存为 6 月 26 日凌晨 3 点 UTC。现在,如果我们查找 6/25 的所有事件,则不会显示 6/25 11PM 事件。这就是为什么我想在数据库上将其另存为 EST。

我已经查看了TimeZoneInfo.ConvertTime但这只接收并返回日期时间,而不是日期时间偏移量

我真的在寻找类似DateTimeOffset.ConvertTo(TimeZoneInfo)的东西,但我还没有找到一个好的解决方案,也可以照顾 DST

这就是我最终解决这个问题的方式。在这种情况下,这会将其转换为正确的时区

private DateTimeOffset ChangeTimezone(DateTimeOffset originalTime)
{
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time");
return originalTime.ToOffset(tzi.GetUtcOffset(originalTime));
}

在我的测试中,这也保留了 DST。例如,中部时间的偏移量为 -5,夏令时的偏移量为 -6。

相关内容

  • 没有找到相关文章

最新更新