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

Преобразовать TFileTime в TDateTime

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

Преобразовать TFileTime в TDateTime

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function FileTimeToDateTime(FileTime: TFileTime): TDateTime;
 var
   ModifiedTime: TFileTime;
   SystemTime: TSystemTime;
 begin
   Result := 0;
   if (FileTime.dwLowDateTime = 0) and (FileTime.dwHighDateTime = 0) then
     Exit;
   try
     FileTimeToLocalFileTime(FileTime, ModifiedTime);
     FileTimeToSystemTime(ModifiedTime, SystemTime);
     Result := SystemTimeToDateTime(SystemTime);
   except
     Result := Now;  // Something to return in case of error 
  end;
 end;

 function DateTimeToFileTime(FileTime: TDateTime): TFileTime;
 var
   LocalFileTime, Ft: TFileTime;
   SystemTime: TSystemTime;
 begin
   Result.dwLowDateTime  := 0;
   Result.dwHighDateTime := 0;
   DateTimeToSystemTime(FileTime, SystemTime);
   SystemTimeToFileTime(SystemTime, LocalFileTime);
   LocalFileTimeToFileTime(LocalFileTime, Ft);
   Result := Ft;
 end;

Переведенный текст:

Код - пара функций, написанных на Delphi, которые конвертируют между TFileTime и TDateTime.

Первая функция, FileTimeToDateTime, принимает TFileTime в качестве входного параметра и возвращает TDateTime. Она использует Windows API для преобразования файла времени из локального файла времени в системное время и затем в дату/время.

Работа функции:

  1. Если входной TFileTime имеет оба низкого и высокого части, установленные на 0, она немедленно выходит с результатом 0.
  2. Она вызывает FileTimeToLocalFileTime для преобразования файла времени из локального файла времени в системное время.
  3. Затем она вызывает FileTimeToSystemTime для преобразования системного времени в TSystemTime.
  4. Наконец, она вызывает SystemTimeToDateTime для преобразования TSystemTime в TDateTime. Если какой-либо из этих шагов fails (например, если возникла ошибка при преобразовании файла времени), она ловит исключение и возвращает текущую дату/время (Now).

Вторая функция, DateTimeToFileTime, принимает TDateTime в качестве входного параметра и возвращает TFileTime. Она использует Windows API для преобразования даты/времени из системного времени в локальное файловое время и затем в TFileTime.

Работа функции:

  1. Она устанавливает обе низкой и высокую части выходного TFileTime на 0.
  2. Она вызывает DateTimeToSystemTime для преобразования входного TDateTime в TSystemTime.
  3. Затем она вызывает SystemTimeToFileTime для преобразования системного времени в локальное файловое время.
  4. Наконец, она вызывает LocalFileTimeToFileTime для преобразования локального файлового времени в TFileTime.

Обе функции хорошо структуированы и обрабатывают ошибки правильно, но они могли быть слегка улучшены для ясности и читаемости. Вот пример, как это можно сделать:

function FileTimeToDateTime(FT: TFileTime): TDateTime;
var
  ModifiedTime: TFileTime;
  SystemTime: TSystemTime;
begin
  // Если входной TFileTime имеет оба низкого и высокого части, установленные на 0, возвращаем 0
  if FT.dwLowDateTime = 0 and FT.dwHighDateTime = 0 then
    Result := 0
  else
  try
    FileTimeToLocalFileTime(FT, ModifiedTime);
    FileTimeToSystemTime(ModifiedTime, SystemTime);
    Result := SystemTimeToDateTime(SystemTime);
  except
    // Возвращаем текущую дату/время в случае ошибки
    Result := Now;
  end;
end;

function DateTimeToFileTime(DT: TDateTime): TFileTime;
var
  LocalFileTime, Ft: TFileTime;
  SystemTime: TSystemTime;
begin
  Result.dwLowDateTime := 0;
  Result.dwHighDateTime := 0;

  try
    DateTimeToSystemTime(DT, SystemTime);
    SystemTimeToFileTime(SystemTime, LocalFileTime);
    LocalFileTimeToFileTime(LocalFileTime, Ft);
    Result := Ft;
  except
    // Вы можете также возвращать ошибочное значение здесь, если желаете
  end;
end;

Я добавил комментарии для объяснения того, что каждый участок кода делает. Я также удалил ненужные объявления переменных на вершине каждой функции и объединил проверки dwLowDateTime и dwHighDateTime в одну строку в первой функции.

В статье описаны функции на Delphi для преобразования типов TDateTime и TFileTime, что позволяет работать с файловой системой Windows.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 14:39:35/0.0032398700714111/0