![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Snake_B |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не могу разобраться как считать из реестра даные часовых поясов о датах перехода на летнее/зимнее время.
Хранятся тут: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\ Параметр TZI, в reg_binary... ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата такая вот функция не сработает однозначно. Ибо прототип неправильный. Правильный - такой:const DLL = 'ntdll.dll'; function RtlLocalTimeToSystemTime(LocalTime: LongInt; SystemTime: LongInt) : NTSTATUS; stdcall; external DLL name 'RtlLocalTimeToSystemTime'; function RtlLocalTimeToSystemTime( (из исходников JEDI). Чувствуешь разницу, да? Указатели там на LARGE_INTEGER (он же Int64), а не просто LongInt-ы. А насчет перевести в нужный формат - есть DateTimeToTimeStamp, которая это и делает. |
Snake_B |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: ![]() ![]() ![]() |
не сработает однозначно. Ибо прототип неправильный. Правильный - такой: function RtlLocalTimeToSystemTime( (из исходников JEDI). Чувствуешь разницу, да? Указатели там на LARGE_INTEGER (он же Int64), а не просто LongInt-ы. А насчет перевести в нужный формат - есть DateTimeToTimeStamp, которая это и делает. спасибо... но сделал по другому... GetTimeZoneInformation(tTZI); DateTimeToSystemTime(tDati, st); SystemTimeToTzSpecificLocalTime(@tTZI, st, lt); оно DTZ учитывает... правда прийдется рассчитывать наоборот... ну да ладно... |
![]() ![]() |
![]() |
Текстовая версия | 14.08.2025 13:35 |