Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 16.08.2007
Сообщений: 271

Как получить свой часовой пояс?

20.07.2011, 14:32. Показов 2456. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу получающую времи из инета не сложно. Но она вернёт время без 'смещения' в часах. Как узнать свой часовой пояс и насколько сдвинуть часы?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2011, 14:32
Ответы с готовыми решениями:

Как получить путь к фоновому рисунку Windows и как корректно изменить фон на свой?
Как получить путь к фоновому рисунку Windows и как корректно изменить фон на свой?

Как получить время, зная часовой пояс?
я знаю часовой пояс +4, как определить время по нему? есть может какие-то онлайн-базы времени, от куда его можно получить? и как это...

Можно запросом через telnet серверу получить часовой пояс клиента?
Пишу сервер(windows). Можно ли как-то запросом через telnet серверу получить часовой пояс клиента(это что бы вернуть клиенту время в его...

4
Comanche
20.07.2011, 14:59
Копай АПИ-функцию GetTimeZoneInformation.
0 / 0 / 1
Регистрация: 16.08.2007
Сообщений: 271
23.07.2011, 02:01  [ТС]
Объявлял:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Declare Function GetTimeZoneInformation Lib 'kernel32' (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
 
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
вылазит ошибка при попытке любого вызова.

Нашёл пример:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
private Declare Function NetRemoteTOD Lib 'Netapi32.dll' ( _
    tServer as Any, pBuffer as Long) 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 Declare Function GetTimeZoneInformation Lib 'kernel32'
        (lpTimeZoneInformation as TIME_ZONE_INFORMATION) as Long
 
private Declare Function NetApiBufferFree Lib 'Netapi32.dll'
        (byval lpBuffer as Long) as Long
 
private Type TIME_OF_DAY_INFO
    tod_elapsedt as Long
    tod_msecs as Long
    tod_hours as Long
    tod_mins as Long
    tod_secs as Long
    tod_hunds as Long
    tod_timezone as Long
    tod_tinterval as Long
    tod_day as Long
    tod_month as Long
    tod_year as Long
    tod_weekday as Long
End Type
 
private Declare Sub CopyMemory Lib 'kernel32' Alias 'RtlMoveMemory'
                    (Destination as Any, Source as Any, byval Length as Long)
 
public Function getRemoteTOD(byval strServer as string) as date
 
    Dim result as date
    Dim lRet as Long
    Dim tod as TIME_OF_DAY_INFO
    Dim lpbuff as Long
    Dim tServer() as Byte
 
    tServer = strServer & vbNullChar
    lRet = NetRemoteTOD(tServer(0), lpbuff)
 
    If lRet = 0 then
     CopyMemory tod, byval lpbuff, len(tod)
     NetApiBufferFree lpbuff
     result = DateSerial(tod.tod_year, tod.tod_month, tod.tod_day) + _
     TimeSerial(tod.tod_hours, tod.tod_mins - tod.tod_timezone, tod.tod_secs)
     getRemoteTOD = result
    else
     Err.Raise Number:=vbObjectError + 1001, _
     Description:='cannot get remote TOD'
    End If
End Function
но tod в нём мне ничего не возвращает кроме 0 при тестах. я совсем запутался.
как узнать смещение? просто получить цифру 3 (смещение 3 часа) или 11 (11 часов от гринвича)?
0
0 / 0 / 1
Регистрация: 16.08.2007
Сообщений: 271
31.07.2011, 15:37  [ТС]
Как работать с ГеттаймЗонИнформейшн? Как просто получить -3 или +4 часа смещения от гринвича как я понмаю.
0
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
31.07.2011, 16:55
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit
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      As String * 64
   StandardDate      As SYSTEMTIME
   StandardBias      As Long
   DaylightName      As String * 64
   DaylightDate      As SYSTEMTIME
   DaylightBias      As Long
End Type
Private Declare Function GetTimeZoneInformation _
   Lib 'kernel32' (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
'
Public Function GetTimeBias() as Long
    Const TIME_ZONE_ID_STANDARD As Long = 1
    Const TIME_ZONE_ID_UNKNOWN As Long = 0
    Const TIME_ZONE_ID_DAYLIGHT As Long = 2
    Const TIME_ZONE_ID_INVALID As Long = &HFFFFFFFF
    Dim TimeZone      As TIME_ZONE_INFORMATION
    Dim plngRtn       As Long
    Dim plngMinutes   As Long
   
    plngRtn = GetTimeZoneInformation(TimeZone)
    GetTimeBias = -(TimeZone.Bias + IIf(plngRtn = TIME_ZONE_ID_DAYLIGHT, TimeZone.DaylightBias, 0))
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2011, 16:55
Помогаю со студенческими работами здесь

Как изменить часовой пояс в системе?
Как изменить часовой пояс в системе средствами Delphi/WinAPI ? Например у меня стоит сейчас часовой пояс +04 GMT, а мне нужно сделать +08...

Как сменить часовой пояс на сайте?
Здравствуйте! У меня на форуме время отправки сообщения показываются + 2 часа. Как это можно исправить?

Как узнать часовой пояс UTC установленный на ПК
Как узнать часовой пояс UTC установленный на ПК средствами C++ Builder XE?

Как корректно менять часовой пояс сессии?
форумчане, подскажите как делать выборки в другом часом поясе? как корректно менять часовой пояс сессии? пример. из БД нужно...

Как задать часовой пояс в винде из батника?
Как задать часовой пояс в винде из батника?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru