Определить часовой пояс в системе - Visual Basic .NET
Формулировка задачи:
Добрый день.
В общем первый вопрос: Как узнать какой часовой пояс, установленный на компьютере, на котором выполняется программа? Знаю что существует класс
TimeZone
иTimeZoneInfo
, но как его правильно использовать я так и не понял. А инфа на MSDN просто жуть какая..... В общем на форме у меня есть DGV, которая грузит данные с интернета. В этих данных есть расписание занятий с указанным временем начала. Допустим, 21:30 (это по UTC +03:00). Время это указано как строковый тип данных (String). Мне нужно сделать так, что бы программа при запуске определяла установленный на компьютере часовой пояс (допустим это будет UTC +05:00), вычисляла разницу в часах между UTC +3:00 и прибавила (или на оборот убавила) эту разницу в DGV. т.е. в нашем случае должно получится не 21:30 а 23:30 Ну как-то так. Третий день пытаюсь все это реализовать но пока без результатно. По этому обращаюсь к вам. Даже если я смогу найти разницу между часовыми поясами, то как я смогу прибавить или убавить ее, если в DGV время приходит как строка? Его можно будет перевести в дату? Заранее благодарюРешение задачи: «Определить часовой пояс в системе»
textual
Листинг программы
Dim lessonTime = "21:30" ' Время урока полученное из интернета
Dim lessonTimeUtcOffset = TimeSpan.FromHours(3) ' Часовой пояс для даты урока
' Формируем дату занятия в исходном часовом поясе
Dim now = DateTime.Now
Dim lessonDTO As New DateTimeOffset(now.Year, now.Month, now.Day, 0, 0, 0, lessonTimeUtcOffset)
lessonDTO += TimeSpan.ParseExact(lessonTime, "g", CultureInfo.GetCultureInfo("ru-RU"))
' Формируем дату занятия в локальном часовом поясе
lessonDTO = New DateTimeOffset(lessonDTO.UtcDateTime, DateTimeOffset.Now.Offset)
' Получаем DateTime из DateTimeOffset
' Это делать необязательно т.к. можно работать с DateTimeOffset
' Dim lessonDate As DateTime = lessonDTO.DateTime