DateTimeOffset更改到特定时区的偏移量

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

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

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

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

我看过TimeZoneInfo.ConvertTime,但是它只接受并返回DateTime,而不返回DateTimeOffset

我确实正在寻找类似DateTimeOffset.ConvertTo(TimeZoneInfo)的东西,但是我还没有找到一个好的解决方案,该解决方案还可以解决DST问题

iCMS 回答:DateTimeOffset更改到特定时区的偏移量

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

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

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

本文链接:https://www.f2er.com/2057359.html

大家都在问