PascalTZ/ru

From Free Pascal wiki
Jump to navigationJump to search

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 releases

Журнал изменений

  • Version 1.0 (2009-11-10) [1]
  • Version 2.0 (2016-07-19) [2]

Отчеты об ошибках

Отчеты об ошибках и предложения могут быть зарегистрированы в GitHub:PascalTZ issues.

См. также

Начиная с 2.6.2, FPC имеет функции LocalTimeToUniversal и UniversalTimeToLocal в модуле dateutils для преобразования между местным временем и временем UTC. Эти функции могут быть полезными, и являться альтернативой для PascalTZ, если вас не интересуют историческая/будущая дата/время (т.е. функции используют текущее летнее время и т.д. для преобразования в/из времени UTC). Эти функции позволяют задавать ручные смещения по отношению к UTC, но тогда вам будет необходимо отслеживать эти смещения вручную - а так за вас это сделает PascalTZ.