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

Преобразование временных меток Google Chrome cookie в TDateTime в Delphi

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

 

При работе с веб-приложениями на языке Delphi иногда возникает необходимость преобразования временных меток, сохраненных в cookie Google Chrome, в формат TDateTime, который используется в Delphi. В данном случае, временная метка представляет собой Unix timestamp, то есть количество секунд, прошедших с полуночи 1 января 1970 года. Для преобразования такого временного штампа в TDateTime в Delphi, можно использовать функцию System.DateUtils.UnixToDateTime.

Шаг 1: Понимание проблемы

Пользователь столкнулся с проблемой при попытке преобразовать Unix timestamp (например, 1765064691) в TDateTime, используя некорректный метод StrToDateTime. Это привело к возникновению исключения, так как StrToDateTime предназначен для преобразования строки в TDateTime, но не для работы с Unix timestamp.

Шаг 2: Использование существующего решения

Для решения этой проблемы рекомендуется использовать функцию System.DateUtils.UnixToDateTime, которая предназначена для преобразования Unix timestamp в TDateTime. Например:

uses
  System.DateUtils;

var
  d: TDateTime;
begin
  d := UnixToDateTime(1765064691);
end;

Шаг 3: Альтернативное решение

Если по каким-то причинам использование System.DateUtils.UnixToDateTime невозможно, можно реализовать собственный метод преобразования, учитывая, что TDateTime в Delphi хранит информацию о времени в виде количества дней и миллисекунд с начала эры Windows (1 января 1601 года):

const
  UnixEpoch = EncodedDateTime(1970, 1, 1, 0, 0, 0, 0, etUTC);
  WindowsEpoch = EncodedDateTime(1601, 1, 1, 0, 0, 0, 0, etUTC);

function UnixToDelphiDateTime(unixTime: Int64): TDateTime;
begin
  Result := EncodedDateTimeToDateTime(EncodedDateTime(WindowsEpoch.Date, WindowsEpoch.Time + (unixTime * 86400000)));
end;

Использование функции:

var
  d: TDateTime;
begin
  d := UnixToDelphiDateTime(1765064691);
end;

Шаг 4: Работа с CEF

Если cookie приходит из CEF (Chromium Embedded Framework), то для преобразования можно использовать функцию CefBaseTimeToDateTime из единицы uCEFMiscFunctions проекта CEF4Delphi. Это функция предназначена для преобразования TCefBaseTime, который представляет собой время в UTC в микросекундах с эпока Windows.

Заключение

В данной статье мы рассмотрели проблему преобразования Unix timestamp из cookie Google Chrome в TDateTime для использования в Delphi. Предложили использование стандартной функции System.DateUtils.UnixToDateTime, а также альтернативное решение с реализацией собственной функции преобразования. Это знание может быть полезно при разработке веб-приложений на Delphi, где требуется работа с временными метками.

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

Описание контекста: При работе с веб-приложениями на языке Delphi необходимо преобразование Unix timestamp из cookie Google Chrome в формат TDateTime для использования в Delphi.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-02-19 01:32:05/0.0032260417938232/0