【问题标题】:Turn off timezone DST adjustment in VB.NET?在 VB.NET 中关闭时区 DST 调整?
【发布时间】:2016-05-04 02:06:09
【问题描述】:

各位程序员。最近,当 DST 应用于我的 asp.net 应用程序时,我遇到了一个问题。

最初,我的日期时间转换器如下:

Private Function ConvertTimezone(convertDatetime As DateTime, zoneID As String) As DateTime
    Dim timeZoneInfo As TimeZoneInfo = System.TimeZoneInfo.FindSystemTimeZoneById(zoneID)
    Dim dataTimeByZoneId As DateTime = System.TimeZoneInfo.ConvertTime(convertDatetime, System.TimeZoneInfo.Local, timeZoneInfo)
    Return dataTimeByZoneId
End Function

正如我所料,它运行顺利。但是,当夏令时开始时,所有的东西似乎都走错了路,因为我列出了选择为 UTC - 12 到 UTC + 12 的选项,方法是获取标准时间并使用上面的代码进行转换。

例如,我面临的问题是在 DST 之前的小时变化,我的 UTC - 5 来自大西洋标准时间,但在 DST 之后,它现在返回 UTC - 4 作为 .NET 自行转换。从那时起,下拉菜单就出错了。

有没有办法关闭 DST 调整?或任何其他解决方法可以补充偏移量? (不允许使用其他图书馆,对不起各位..)

【问题讨论】:

    标签: asp.net vb.net datetime


    【解决方案1】:

    我通过解析 UTC + x 值来解决这个问题,其中 x 是偏移量

    Private Function ConvertTimezone(convertDatetime As DateTime, zoneID As String) As DateTime
        Dim desttimeZoneInfo As TimeZoneInfo
        Dim dataTimeByZoneId As DateTime
        If Not zoneID.Contains("GMT") Then
            desttimeZoneInfo = System.TimeZoneInfo.FindSystemTimeZoneById(zoneID)
            dataTimeByZoneId = System.TimeZoneInfo.ConvertTime(convertDatetime, System.TimeZoneInfo.Local, desttimeZoneInfo)
        Else
            dataTimeByZoneId = System.TimeZoneInfo.ConvertTimeToUtc(convertDatetime, System.TimeZoneInfo.Local)
            dataTimeByZoneId = dataTimeByZoneId.AddHours(Double.Parse(zoneID.Substring(3)))
        End If
        Return dataTimeByZoneId
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2021-08-18
      • 2011-04-17
      • 2019-05-06
      • 1970-01-01
      • 2020-09-24
      • 2012-07-09
      相关资源
      最近更新 更多