none
Некорректные TimeZoneInfo.Id RRS feed

  • Вопрос

  • Здравствуйте! Не подскажете почему, в случае когда временная зона содержит автопереход на зимнее время и его отключить...вместо глобального TimeZoneInfo.Id  отображается русскоязычное наименование вместо глобального идентификатора, указанного в реестре?Т.е. например часовой пояс Caucasus Standard Time отображается как "Кавказское время (зимнее)" ?

    12 июля 2012 г. 12:36

Ответы

  • Да вы правы, извиняюсь. Решается проблема так:

       Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
            For Each x In TimeZoneInfo.GetSystemTimeZones
                If x.StandardName = TimeZoneInfo.Local.StandardName Then
                    MsgBox(x.Id)
                End If
            Next
        End Sub
    В результате вы получите англиский ID текущего пояса.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа Anton Paramonov 24 июля 2012 г. 6:41
    17 июля 2012 г. 10:34
    Отвечающий

Все ответы

  • Привет.

    Может быть тип datetimeoffset решит вашу проблему, посмотрите статью о нем - Using time zone data in SQL Server 2008


    Для связи [mail]

    12 июля 2012 г. 13:41
  • Варианта два. Либо вы как то хитро обращаетесь к TimeZoneInfo.Id и тогда покажите как. Либо, что более вероятно, эти значения изменены в реестре. TimeZoneInfo практически все значения берет из реестра и если вы или некое приложение на вашем компьютере внесли изменения в реестр, то будут показываться такие значения. На всякий случай прошел по всей кооллекции значений Id на своем компьютере. Все английские без приставок о зимнем или летнем времени.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    13 июля 2012 г. 3:20
    Отвечающий
  • А Вы поменяйте свой часовой пояс на кавказкий например и снимите галочку "Автопереход на зимнее время" и посмотрите, что у вас выдаст TimeZoneInfo.Local.Id ?

    Я никак хитро не обращаюсь, просто получение текущего пояса и его Id.


    17 июля 2012 г. 9:32
  • Да вы правы, извиняюсь. Решается проблема так:

       Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
            For Each x In TimeZoneInfo.GetSystemTimeZones
                If x.StandardName = TimeZoneInfo.Local.StandardName Then
                    MsgBox(x.Id)
                End If
            Next
        End Sub
    В результате вы получите англиский ID текущего пояса.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа Anton Paramonov 24 июля 2012 г. 6:41
    17 июля 2012 г. 10:34
    Отвечающий