PascalTZ/ru
│ English (en) │ русский (ru) │
О компоненте
PascalTZ расшифровывается как «Pascal Time Zone»(часовые пояса Pascal). Это позволяет вам конвертировать время между местным временем в различных часовых поясах и GMT/UTC, с учетом исторических изменений в правилах часовых поясов. PascalTZ использует Time Zone Database (часто называемую tz или zoneinfo), чтобы определить, как правильно настроивать время для различных часовых поясов. Корректность преобразований часовых поясов в будущем зависит от использования современной базы данных. Осторожно, правила часового пояса могут быть изменены правительствами по всему миру, иногда с очень коротким уведомлением.
Компонент PascalTZ можно использовать в проектах с чистым FPC или установить как пакет разработки и среды выполнения в Lazarus IDE. Он также поставляется с тестовой средой, набором тестовых векторов преобразования часовых поясов и контрольных примеров для внутренних функций.
Более подробную информацию можно найти на GitHub:PascalTZ.
Пример
uses
SysUtils, DateUtils, uPascalTZ;
var
PascalTZ: TPascalTZ;
DateTime: TDateTime;
begin
PascalTZ := TPascalTZ.Create;
// Загружаем базу данных часовых поясов из каталога "tzdata"
// Скачиваем с: https://www.iana.org/time-zones
PascalTZ.DatabasePath := 'tzdata';
// Текущее местное и UTC-время
DateTime := Now;
WriteLn('Местное время: ', DateTimeToStr(DateTime));
DateTime := LocalTimeToUniversal(DateTime);
WriteLn('UTC-время: ', DateTimeToStr(DateTime));
// Конвертируем текущее время в Парижское
DateTime := PascalTZ.GMTToLocalTime(DateTime, 'Europe/Paris');
WriteLn('Время в Париже: ', DateTimeToStr(DateTime));
// Конвертируем Парижское время в Чикагское
DateTime := PascalTZ.Convert(DateTime, 'Europe/Paris', 'America/Chicago');
WriteLn('Время в Чикаго: ', DateTimeToStr(DateTime));
// Проверяем, существует ли часовой пояс
WriteLn('Africa/Lagos существует? ', PascalTZ.TimeZoneExists('Africa/Lagos'));
WriteLn('Australia/Darwin существует? ', PascalTZ.TimeZoneExists('Australia/Darwin'));
PascalTZ.Free;
end.
Авторы
Эта библиотека была первоначально опубликована José Mejuto в 2009 году и поддерживается Денисом Козловым с 2015 года.
Лицензия
Модифицированная LGPL (такая же, как FPC RTL и Lazarus LCL).
Загрузка
Журнал изменений
Отчеты об ошибках
Отчеты об ошибках и предложения могут быть зарегистрированы в GitHub:PascalTZ issues.
См. также
Начиная с 2.6.2, FPC имеет функции LocalTimeToUniversal
и UniversalTimeToLocal
в модуле dateutils
для преобразования между местным временем и временем UTC. Эти функции могут быть полезными, и являться альтернативой для PascalTZ, если вас не интересуют историческая/будущая дата/время (т.е. функции используют текущее летнее время и т.д. для преобразования в/из времени UTC). Эти функции позволяют задавать ручные смещения по отношению к UTC, но тогда вам будет необходимо отслеживать эти смещения вручную - а так за вас это сделает PascalTZ.