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

Преобразовать TDateTime в Unix TimeStamp

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

Преобразовать TDateTime в Unix TimeStamp

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

{ 
  Sometimes you want to communicate with mySQL or other databases using 
  the unix timestamp. To solve this difference you may want to convert your 
  TDateTime to the unix timestamp format and vice versa. 

  Um den in einigen Datenbanken verwendeten Unix Timestamp fur die Kommunikation 
  mit Delphi nutzbar zu machen, kann man mit dieser Unit das TDateTime Format 
  in den Unix Timestamp und umgekehrt umwandeln. 
}

 unit unix_utils;

 interface

 implementation

 const
   // Sets UnixStartDate to TDateTime of 01/01/1970 
  UnixStartDate: TDateTime = 25569.0;

 function DateTimeToUnix(ConvDate: TDateTime): Longint;
 begin
   //example: DateTimeToUnix(now); 
  Result := Round((ConvDate - UnixStartDate) * 86400);
 end;

 function UnixToDateTime(USec: Longint): TDateTime;
 begin
   //Example: UnixToDateTime(1003187418); 
  Result := (Usec / 86400) + UnixStartDate;
 end;

 end.

Это модуль Delphi, который предназначен для конвертации между форматом TDateTime и форматом Unix-часового таймстэмпа. Комментарий автора объясняет цель этой конвертации, так как некоторые базы данных используют формат Unix-часовых таймстэмпов, в то время как Delphi использует формат TDateTime.

Два функционала, предоставленные в этом модуле:

  1. DateTimeToUnix(ConvDate: TDateTime): Longint: эта функция принимает значение TDateTime в качестве входного параметра и возвращает эквивалентный Unix-часовой таймстэмп в виде Longint. Расчет производится путем вычитания UnixStartDate (1 января 1970 года) из входной даты, умножения результата на 86400 (количество секунд в сутки) и округления результата.
  2. UnixToDateTime(USec: Longint): TDateTime: эта функция принимает Unix-часовой таймстэмп в качестве входного параметра и возвращает эквивалентное значение TDateTime. Расчет производится путем деления входного Unix-часового таймстэмп на 86400, добавления UnixStartDate и возврата результата.

Исполнение этих функций простое и легко понимаемое.

Вот альтернативное решение с более компактным подходом:

unit unix_utils;

interface

function DateTimeToUnix(ConvDate: TDateTime): Longint;
begin
  Result := Trunc((ConvDate - UnixStartDate) * 86400);
end;

function UnixToDateTime(USec: Longint): TDateTime;
begin
  Result := UnixStartDate + USec / 86400;
end;

const
  UnixStartDate = 25569.0; // 1 января 1970 года

implementation

end.

Я удалил ненужные комментарии и реформатировал код для более компактного и читаемого вида. Я также заменил функцию Round на Trunc, так как округление результата не является необходимым в этом случае (поскольку мы работаем с целыми числами). Кроме того, я использовал функцию Trunc вместо кастинга результата в целое число, что более эффективно.

В целом, это модуль предлагает простой и эффективный способ конвертации между форматом TDateTime и форматом Unix-часового таймстэмп.

Преобразовать TDateTime в Unix TimeStamp - это функция, которая позволяет конвертировать дату и время TDateTime в формат Unix TimeStamp и наоборот, для использования в сети или при взаимодействии с базами данных.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:23:43/0.0054938793182373/1