Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Вычисление разницы между двумя датами в Delphi с точностью до секунд

Delphi , Синтаксис , Дата и Время

Рассмотрим задачу вычисления разницы между двумя переменными типа TDateTime в Delphi в формате hh:mm:ss. Пользователь имеет две переменные:

s := StrToDateTime('03/03/2017 10:10:12');
e := StrToDateTime('04/04/2017 10:10:12');

и ему необходимо узнать разницу между ними. Функции типа ...Between() в данном случае не помогают, и требуется написать собственный код для решения этой задачи.

Решение с использованием DateUtils.SecondsBetween

Для начала, можно использовать функцию DateUtils.SecondsBetween, которая возвращает разницу между двумя датами в секундах. Вот пример функции, которая вычисляет разницу в формате hh:mm:ss:

uses
  DateUtils, SysUtils;

function TimeDiffStr(const s1, s2: String): String;
var
  t1, t2: TDateTime;
  secs: Int64;
begin
  t1 := StrToDateTime(s1);
  t2 := StrToDateTime(s2);
  secs := SecondsBetween(t1, t2);
  Result := Format('%2.2d:%2.2d:%2.2d', [secs div SecsPerHour, (secs div SecsPerMin) mod SecsPerMin, secs mod SecsPerMin]);
end;

begin
  WriteLn(TimeDiffStr('03/03/2017 10:10:12', '04/04/2017 10:10:12'));
  ReadLn;
end.

Альтернативное решение с использованием TTimeSpan

Также можно воспользоваться классом TTimeSpan из модуля System.TimeSpan, который позволяет работать с временными интервалами:

program Project1;
{$APPTYPE CONSOLE}
uses
  System.SysUtils, System.TimeSpan;

var
  StartDate, EndDate: TDateTime;
  TS: TTimeSpan;
  Temp: string;
begin
  StartDate := StrToDateTime('03/03/2017 10:10:12');
  EndDate := StrToDateTime('04/04/2017 10:10:12');
  TS := TTimeSpan.Subtract(EndDate, StartDate);
  Temp := TS.ToString;
  WriteLn(Temp);  // Выводит разницу в формате дней, часов, минут и секунд
  WriteLn(Format('%.2d:%.2d:%.2d', [TS.Days * 24 + TS.Hours, TS.Minutes, TS.Seconds]));
  ReadLn;
end.

Обратите внимание, что в коде выше использование строк с датами и временем затрудняет локализацию и является избыточным. Лучше использовать функции SysUtils.EncodeDate, SysUtils.EncodeTime, или DateUtils.EncodeDateTime для работы с датами и временем.

Вывод

В данной статье были рассмотрены два метода вычисления разницы между двумя датами в формате TDateTime в Delphi: использование функции DateUtils.SecondsBetween и класса TTimeSpan. Оба подхода позволяют получить желаемый результат и могут быть использованы в зависимости от конкретных требований проекта.

Создано по материалам из источника по ссылке.

Вычисление разницы между двумя датами в формате `TDateTime` в языке программирования Delphi с использованием двух методов: функции `DateUtils.SecondsBetween` и класса `TTimeSpan`.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 14:59:52/0.024944067001343/1