powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разница UTC
6 сообщений из 6, страница 1 из 1
Разница UTC
    #35406858
Orchid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно программно вычислить разницу между локальным временем и временем UTC?
...
Рейтинг: 0 / 0
Разница UTC
    #35408080
Wasup!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предполагаю, что как разницу между датами)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Option Explicit

Sub tst()

Dim dtmNormal    As Date
Dim dtmUTC       As Date
Dim ss  As Long
Dim hh  As Long
Dim mm  As Long

dtmNormal = Now
dtmUTC = Now -  0 . 123  'число взял произвольное

Debug.Print dtmNormal
Debug.Print dtmUTC

ss = Abs(DateDiff("s", dtmNormal, dtmUTC))
hh = Fix(ss / ( 60  *  60 )) *  60  *  60 
mm = Fix((ss - hh) /  60 ) *  60 

Debug.Print Fix(ss / ( 60  *  60 )) & ":" & _
            Fix((ss - hh) /  60 ) & ":" & _
            ss - hh - mm & " hh:mm:ss"

End Sub
...
Рейтинг: 0 / 0
Разница UTC
    #35408236
Orchid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, но ведь число, которое вы взяли произвольным, должно быть точно известно.
В настройках компьютера стоит флажок "Автоматический переход на летнее время и обратно". Т.е. в летнее время разница между локальным временем и временем UTC будет 4, а в зимнее время 3 часа.
Т.е нужна не разница как таковая, а, возможно, признак, по которому можно определить, летнее или зимнее время сейчас. Все это нужно, т.к. в базе данных исторического сервера данные хранятся по гринвичевскому времени, а чтобы обратиться к ним, нужно от локального времени компьютера отнимать эту разницу. Расскажите, если кто-нибудь что-то понял из моего запутанного рассказа)
...
Рейтинг: 0 / 0
Разница UTC
    #35408693
Wasup!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Число взял произвольное т.к. не знаю, какая у Вас разница с UTC, можно:
Код: plaintext
dtmUTC = DateAdd("h", +-нужно число часов, dtmNormal)

Определить летнее или зимнее время можно, например, так) :

Код: plaintext
1.
2.
3.
4.
If a >= CDate("30.03.2008 02:00") And a <= CDate("26.10.2008 03:00") Then
    Debug.Print "Летнее!"
Else
    Debug.Print "Зимнее!"
End If

Но надо добавить функцию, которая будет определять последнее воскресенье марта и последнее воскресенье октября для произвольного года.
Кстати, возможно, есть Api функция, которая определяет летнее/зимнее время.
А какая БД? Например, Oracle умеет работать с UTC датами.
...
Рейтинг: 0 / 0
Разница UTC
    #35408829
Orchid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wasup!Но надо добавить функцию, которая будет определять последнее воскресенье марта и последнее воскресенье октября для произвольного года.
Это для меня не представляется простой задачей(

Что касается Api функции, то попробовала применить GetTimeZoneInformation. Должно быть так: UTC=Local time + biaz. Значение biaz почему-то всегда -180 (у меня часовой пояс GMT+3:00:00), независимо от того, зимнее или летнее время в системе. Еще есть Dayligt biaz-по логике вещей при летнем времени там должно быть -60, ан нет! И никакого другого признака мне пока не удалось найти. Эх) Наверное, плохо ищу)
Wasup!А какая БД?

База данных SQL SCADA-системы WinCC
...
Рейтинг: 0 / 0
Разница UTC
    #35410989
Orchid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кому интересно, проблема решена следующим образом:

Для того чтобы считать локальное время компьютера и время UTC в библиотеке "kernel32.dll" есть две функции для чтения этих значений:
GetLocalTime и GetSystemTime соответственно.
Разница между этими двумя значениями дает искомую величину: 3 часа в зимнее время, 4 часа в летнее. Конечно, если в настройках Windows задан Переход на зимнее/летнее время. Вот, в принципе, и все!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разница UTC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]