
Untitled
By: a guest on
May 10th, 2012 | syntax:
None | size: 1.52 KB | hits: 22 | expires: Never
Converto date in Java to integer and then to Delphi Time
const
UnixStartDate = 25569.0;
function DateTimeToUnixTime(const ADateTime: TDateTime): Cardinal;
begin
Result := Round(ADateTime - UnixStartDate) * 86400;
end;
function UnixTimeToDateTime(const UnixDate: Cardinal): TDateTime;
begin
Result := UnixDate / 86400 + UnixStartDate;
end;
procedure TForm1.Button1Click(Sender: TObject);
var StartDate: TDateTime;
UnixDate: Cardinal;
begin
StartDate := Date();
Memo1.Lines.Add('Start Date: ' + DateToStr(StartDate));
UnixDate := DateTimeToUnixTime(StartDate);
Memo1.Lines.Add('DateTimeToUnixTime = ' + IntToStr(UnixDate));
Memo1.Lines.Add('UnixTimeToDateTime = ' + DateToStr(UnixTimeToDateTime(UnixDate)));
end;
function TzSpecificLocalTimeToSystemTime(
lpTimeZoneInformation: PTimeZoneInformation;
lpLocalTime, lpUniversalTime: PSystemTime): BOOL; stdcall; external 'kernel32.dll';
function SystemTimeToTzSpecificLocalTime(
lpTimeZoneInformation: PTimeZoneInformation;
lpUniversalTime, lpLocalTime: PSystemTime): BOOL; stdcall; external 'kernel32.dll';
function JavaToDelphiDateTime(const dt: int64): TDateTime;
var
t: TSystemTime;
begin
DateTimeToSystemTime(25569 + (dt / 86400000), t);
SystemTimeToTzSpecificLocalTime(nil, @t, @t);
Result := SystemTimeToDateTime(t);
end;
function DelphiToJavaDateTime(const dt: TDateTime): int64;
var
t: TSystemTime;
begin
DateTimeToSystemTime(dt, t);
TzSpecificLocalTimeToSystemTime(nil, @t, @t);
Result := Round((SystemTimeToDateTime(t) - 25569) * 86400000)
end;