[fpc-pascal] How to get UTC time
Pete Cervasio
cervasio at airmail.net
Tue Feb 13 23:50:02 CET 2007
On Tuesday 13 February 2007 14:25, Marco van de Voort wrote:
> > for me. It needs both the SysUtils and Libc units, which I'm already
> > using for other declarations anyway.
>
> Libc is a legacy unit, better use the proper (portable) units, and you'll
> spare yourself a libc dependancy, AND make it portable across unices:
However, to compile in Kylix as well (which I believe my post stated I need)
then there would have to be a bunch of ifdefs spread around since the 'unix'
and 'baseunix' units don't exist there (and consequently, there is no
fpGetTimeOfDay function). Also, since the original questioner wanted it to
work under Windows, there would be even more ifdefs. It makes me glad that
I only have to deal with Kylix and FPC under Linux. :)
To answer that "how to do this under Windows" part of the original question,
it looks like it's just as easy. The GetSystemTime API routine returns the
current date and time in UTC form. There's a function in SysUtils to convert
the TSystemTime into a TDateTime, so the following should work. I only
tested it in Delphi 5 under Wine, because that's all I have on this system
for such things:
{$ifdef MSWINDOWS}
{ This uses SysUtils and Windows. }
function emt_now: TDateTime;
var
st: TSystemTime;
begin
GetSystemTime (st);
Result := SystemTimeToDateTime (st);
end;
{$endif}
Adding this to the previous bit of code, and properly supporting compilation
with FPC under *nix and Windows, as well as Delphi and Kylix, is left as an
exercise for the interested reader. ;-)
Best regards,
Pete C.
More information about the fpc-pascal
mailing list