On 20 July 2016 at 10:08, Denis Kozlov <dez...@gmail.com> wrote:

> Is it possible to move NowUTC from LazUTF8SysUtils.NowUTC to FPC, e.g.
> DateUtils?
>
> LocalTimeToUniversal(Now) is inefficient and suffers from a race
> condition, but can still be used as a fallback implementation.
>

So, below is a tidy cross-platform implementation of NowUTC:

function NowUTC: TDateTime;
{$ifdef WINDOWS}
var
  SystemTime: TSystemTime;
begin
  Windows.GetSystemTime(SystemTime);
  Result := SystemTimeToDateTime(SystemTime);
end;
{$else}
{$ifdef UNIX}
var
  tp: timeval;
begin
  fpgettimeofday(@tp,nil);
  Result := UnixToDateTime(tp.tv_sec);
end;
{$else}
begin
  // Beware, it suffers from a race condition!
  Result := LocalTimeToUniversal(Now);
end;
{$endif}


Denis
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to