C# UTC使用夏令时定位

C# UTC使用夏令时定位,c#,utc,datetimeoffset,gmt,C#,Utc,Datetimeoffset,Gmt,我们在数据库中以UTC格式保存所有日期,并为每个用户保存偏移量 我们正在通过以下函数转换为localtime: Private Function ConvertToLocalDateTime(ByVal utcOffset As Integer?, ByVal DateToConvert As DateTime?) As DateTime? getdatetime = DateToConvert.Value.AddHours(utcOffset) If ge

我们在数据库中以UTC格式保存所有日期,并为每个用户保存偏移量

我们正在通过以下函数转换为localtime:

 Private Function ConvertToLocalDateTime(ByVal utcOffset As Integer?, ByVal DateToConvert As DateTime?) As DateTime?

        getdatetime = DateToConvert.Value.AddHours(utcOffset)

        If getdatetime.IsDaylightSavingTime Then
            getdatetime.AddHours(-1)
        End If

        Return getdatetime
    End Function
但仍然有一两个小时的约会时间


如何从utcoffset正确地转换为本地时间,同时兼顾夏令时?

只要将
DateToConvert
上的属性正确设置为
Utc
,您就可以调用。

请参阅*转换还考虑了适用于当前DateTime对象表示的时间的夏令时规则*我不清楚为什么要将UTC偏移量作为参数。相反,您应该使用TimeZoneInfo,因为它知道适用于任何情况的时区规则。如果您只记录了用户在特定时间点的UTC偏移量,则您没有足够的信息。