UTC 到夏令时的当地时间

Posted

技术标签:

【中文标题】UTC 到夏令时的当地时间【英文标题】:UTC to locatime with daylight saving 【发布时间】:2020-01-13 10:19:17 【问题描述】:

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

我们正在通过以下函数转换为本地时间:

 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

但日期仍然有 1 或 2 小时的时间。

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

【问题讨论】:

见docs.microsoft.com/en-us/dotnet/api/…。 *转换还考虑了适用于当前 DateTime 对象表示的时间的夏令时规则。 * 我不清楚您为什么将 UTC 偏移量作为参数。相反,您应该使用 TimeZoneInfo,因为它知道适用于任何情况的时区规则。如果您只记录了用户在特定时间点的 UTC 偏移量,那么您没有足够的信息。 【参考方案1】:

只要将DateToConvert 上的Kind 属性正确设置为Utc,就可以直接调用DateToConvert.ToLocalTime()

【讨论】:

以上是关于UTC 到夏令时的当地时间的主要内容,如果未能解决你的问题,请参考以下文章

UTC 时间、时区、夏令时和夏令时切换日期

为什么存在`getUTCSeconds`和`getUTCMilliseconds`函数?

我从当地时间到 UTC 的转换有啥问题

Js 怎么把UTC时间到转换到当地时间

js utc转当地时间

js将UTC时间转化为当地时区时间