Часовой пояс в системе

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ProgEXEr
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 26.01.2011 (Ср) 14:14
Откуда: Земной шар, Россия, Камчатский край, г. Петропавловск-Камчатский

Часовой пояс в системе

Сообщение ProgEXEr » 25.03.2011 (Пт) 12:54

Доброго времени суток!

Вопрос: как определить часовой пояс, установленный в системе? Желательно не через реестр, а через какую-то API-функцию.
В Google искал, по форуму тоже - не нашёл.

Заранее спасибо!
Тяжела и неказиста жизнь простого программиста...

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Часовой пояс в системе

Сообщение Debugger » 25.03.2011 (Пт) 13:04

Гуглим "Get time zone VB6".
Третья ссылка рассказывает нам о какой-то SetTimeZoneInformation.
Логично предположить, что к ней есть парная функция GetTimeZoneInformation.
Вот: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Этой функции надо передать ссылку на структуру TIME_ZONE_INFORMATION. Она должна её заполнить.
Код:
Код: Выделить всё
Option Explicit
Private Declare Function GetTimeZoneInformation Lib "kernel32" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
Private Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type
Private Type TIME_ZONE_INFORMATION
        Bias As Long
        StandardName(32) As Integer
        StandardDate As SYSTEMTIME
        StandardBias As Long
        DaylightName(32) As Integer
        DaylightDate As SYSTEMTIME
        DaylightBias As Long
End Type

Private Sub Form_Load()
    Dim a As TIME_ZONE_INFORMATION
    GetTimeZoneInformation a
    Debug.Print a.Bias
End Sub

У меня выводит -180 (у меня GMT+3). Значит, часовой пояс можно получить по формуле: -a.Bias/60.
Последний раз редактировалось Debugger 25.03.2011 (Пт) 13:38, всего редактировалось 1 раз.

ProgEXEr
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 26.01.2011 (Ср) 14:14
Откуда: Земной шар, Россия, Камчатский край, г. Петропавловск-Камчатский

Re: Часовой пояс в системе

Сообщение ProgEXEr » 25.03.2011 (Пт) 14:09

Debugger, большое спасибо за помощь!
Проверил, у меня UTC+11, показывает правильно по той формуле, которую Вы указали.
Тяжела и неказиста жизнь простого программиста...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 84

    TopList