Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Sekunden seit einem bestimmten Datum / Unix-zeit

  Alt 30. Jan 2003, 10:00
Folgender Code rechnet die vergangenen Sekunden, die seit einem bestimmten Datum (hier 1. januar 1970 0:00h) vergangen sind, in eine lesbare Datums- und Zeitangabe um:

Code:
function Int32x32To64(const a, b: dword): int64;
begin
  Result := int64(a) * int64(b);
end;

function SecsToDateTime(secs: int64): String;
var
  ft : TFILETIME;
  st : TSYSTEMTIME;
  lt : TSYSTEMTIME;
  li : int64;
  buf1, buf2 : array[0..255] of Char;
begin
  if secs = 0 then
  begin
    result := '';
    exit;
  end;
  st.wYear            := 1970;
  st.wMonth           := 1;
  st.wDayOfWeek       := 0;
  st.wDay             := 1;
  st.wHour            := 1;
  st.wMinute          := 0;
  st.wSecond          := 0;
  st.wMilliseconds    := 0;
  SystemTimeToFileTime(st,ft);
  { Version 1 }
  {ui.QuadPart := Int32x32To64(PUserInfo11(ui11)^.usri11_last_logon, 10000000)
        + 116444736000000000;
  FileTimeToSystemTime(TFileTime(ui),st);
  FileTimeToSystemTime(TFileTime(ui),st);}
  { Version 2 }
  li := Int32x32To64(secs, 10000000) + 116444736000000000;
  ft.dwLowDateTime := DWORD(li);
  ft.dwHighDateTime := li shr 32;
  FileTimeToSystemTime(TFileTime(ft),st);
  SystemTimeToTzSpecificLocalTime(nil, st, lt);
  GetTimeFormat(LOCALE_USER_DEFAULT, TIME_FORCE24HOURFORMAT, @lt, nil, buf1, sizeof(buf1));
  GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, @lt, nil, buf2, sizeof(buf2));
  result := String(buf2)+' / '+String(buf1);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat