r:=reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones'); if r and reg.HasSubKeys then begin ts := TStringList.Create; reg.GetKeyNames(ts); reg.CloseKey; for i := 0 to ts.Count -1 do begin reg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\' + ts.Strings[i], false); //sTmp:=ts.Strings[i]+' - '+reg.ReadString('Display')+' - '+reg.ReadString('Std')+' - '+reg.ReadString('Dlt'); sTmp:=reg.ReadString('Display'); sTmp:=WinCPToUTF8(sTmp); cbTimeList.Items.Add(sTmp); reg.CloseKey; end; ts.Free; end else reg.CloseKey; reg.free; {$ELSE} cbTimeList.Clear; {$ENDIF}
Коллеги, ознакомьтесь пожалуйста с этим материалом: http://sirserge.altai.info/articles/?id=46 Там много что о зонах написано. И, в том числе, добавлю: до сих пор в базе Олсона нет последнего перехода Омска - т.е. даже в этом глобальном хранилище отнюдь не всё правильно. А уж про винду. Гм. Впрочем, в статейке всё сказано.
а почему нельзя синхронизировать время с NTP-сервера ? ) Может же случиться и так , что время у пользователя будет настроено неправильно , и если отсчет брать от локального времени могут возникнуть ошибки
SSerge писал(а):Коллеги, ознакомьтесь пожалуйста с этим материалом
Во FreePascal касающееся работы с датами и временем содержится в unitах SysUtils и DateUtils. Количество функций впечатляет, однако при внимательном изучении можно легко придти к мнению, что многие из них бесполезны целиком и полностью, а многие на самом деле будут выдавать далеко не то, что от них ожидается.
А я всё удивлялся: зачем там то, зачем это, если они ничего не делают толкового. Теперь всё понятно.
Все, пора валить. Где ближайший монастырь для разочаровавшихся программистов? За ссылку спасибо
AlphaBlend писал(а):а почему нельзя синхронизировать время с NTP-сервера ? )
Нерентабельно.
pupsik писал(а):http://wiki.freepascal.org/PascalTZ не подойдет?
Как я понял нужно тогда вести свою БД по временным зонам. Тогда зачем нужна ОС? Хотя, если припрет переходить на linux то подойдет. Пока с Windows разберусь.
Как я понял нужно тогда вести свою БД по временным зонам
ну..у там есть база. Согласно вики (или на форуме прочитал): можно заглянуть в прошлое п.с. чем база то не нравиться? По принципу: всё свое ношу с собой
AlphaBlend писал(а):Эта штука работает корректно , если Ваш сервер синхронизирует свое время !
Именно эта штука работает некорректно, если переводить требуется время, не имеющее отношения к текущему. Делать запросы к недокументированным структурам - отнюдь не самый лучший выбор. Тогда уж надо выдирать из таблицы и правила перевода. И сотворять аналог freepascalTZ верхом на mySQL.