Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Разница UTC / 6 сообщений из 6, страница 1 из 1
02.07.2008, 15:36
    #35406858
Orchid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разница UTC
Как можно программно вычислить разницу между локальным временем и временем UTC?
...
Рейтинг: 0 / 0
03.07.2008, 10:28
    #35408080
Wasup!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разница UTC
Предполагаю, что как разницу между датами)


Код: 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
03.07.2008, 11:14
    #35408236
Orchid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разница UTC
Спасибо, но ведь число, которое вы взяли произвольным, должно быть точно известно.
В настройках компьютера стоит флажок "Автоматический переход на летнее время и обратно". Т.е. в летнее время разница между локальным временем и временем UTC будет 4, а в зимнее время 3 часа.
Т.е нужна не разница как таковая, а, возможно, признак, по которому можно определить, летнее или зимнее время сейчас. Все это нужно, т.к. в базе данных исторического сервера данные хранятся по гринвичевскому времени, а чтобы обратиться к ним, нужно от локального времени компьютера отнимать эту разницу. Расскажите, если кто-нибудь что-то понял из моего запутанного рассказа)
...
Рейтинг: 0 / 0
03.07.2008, 13:18
    #35408693
Wasup!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разница UTC
Число взял произвольное т.к. не знаю, какая у Вас разница с 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
03.07.2008, 13:54
    #35408829
Orchid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разница UTC
Wasup!Но надо добавить функцию, которая будет определять последнее воскресенье марта и последнее воскресенье октября для произвольного года.
Это для меня не представляется простой задачей(

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

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

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


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