unit unit4;
interface
uses
Windows, SysUtils;
function DateTimeToUnix(ConvDate: TDateTime): Longint;
function UnixToDateTime(USec: Longint): TDateTime;
function JavaToDateTime(USec: int64): TDateTime;
function DateTimeToJava(ConvDate: TDateTime): int64;
function GetElapsedTime(last:int64):string;
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;
function DateTimeToJava(ConvDate: TDateTime): int64;
var
TimeZoneInformation: TTimeZoneInformation;
JavaUTC:int64;
begin
GetTimeZoneInformation(TimeZoneInformation);
JavaUTC:=((TimeZoneInformation.Bias+TimeZoneInformation.DaylightBias)*60*1000);
Result := Round(((ConvDate - UnixStartDate) * 86400*1000) + JavaUTC);
end;
function JavaToDateTime(USec: int64): TDateTime;
var
TimeZoneInformation: TTimeZoneInformation;
begin
GetTimeZoneInformation(TimeZoneInformation);
Usec:=Usec-((TimeZoneInformation.Bias+TimeZoneInformation.DaylightBias)*60*1000);
Result := (Usec / (86400*1000)) + UnixStartDate;
end;
function GetElapsedTime(last:int64):string;
var
delta:int64;
SECOND:longint;
MINUTE:longint;
HOUR:longint;
DAY:longint;
begin
//initialization
SECOND := 1000;
MINUTE := 60 * SECOND;
HOUR := 60 * MINUTE;
DAY := 24 * HOUR;
//
delta:=DateTimeToJava(now)-last;
if delta < MINUTE then result:='Меньше минуты назад'
else if delta < HOUR then result:=IntToStr(delta div MINUTE)+' минут назад'
else if delta < DAY then result:=IntToStr(delta div HOUR)+' часов '+IntToStr((delta-(delta div HOUR)*HOUR) div MINUTE)+' минут назад'
else result:=IntToStr(delta div DAY)+' дней '+IntToStr((delta-(delta div DAY)*DAY) div HOUR)+' часов '+IntToStr((delta-((delta div HOUR)*HOUR)-((delta div DAY)*DAY) div HOUR) div MINUTE)+' минут назад';
end;
end.
Функции перевода UNIX и Java даты в TDateTime
Posted by
Alec
on Wednesday, April 16, 2008
Все как и указано в заголовке + функция вычисляющая разницу между указанной датой и системным временем (может пригодится при разработке IM-клиентов)

0 comments:
Post a Comment