Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#35

AW: DateTimeToUnix 1 stunde zurück

  Alt 20. Dez 2020, 09:16
Guten Morgen Emil,

dieser Code macht eigentlich das was Du möchtest.

Delphi-Quellcode:
function TzSpecificLocalTimeToSystemTime(lpTimeZoneInformation: PTimeZoneInformation; var lpLocalTime, lpUniversalTime: TSystemTime): BOOL; stdcall;
function TzSpecificLocalTimeToSystemTime; external kernel32 name 'TzSpecificLocalTimeToSystemTime';


implementation

// trennt die Lokale Zeit von der TimeZone
Function DateTimeToUtc(d:TDateTime):TDateTime;
var
 TZI:TTimeZoneInformation;
 LocalTime, UniversalTime:TSystemTime;
begin
  GetTimeZoneInformation(tzi);
  DateTimeToSystemTime(d,LocalTime);
  TzSpecificLocalTimeToSystemTime(@tzi,LocalTime, UniversalTime);
  Result := SystemTimeToDateTime(UniversalTime);
end;


function DateTimeToUnix(const AValue: TDateTime; AInputIsUTC: Boolean): Int64;
var
  LDate: TDateTime;
 begin
  if AInputIsUTC then
    LDate := AValue
  else
    LDate := DateTimeToUtc(AValue);
  Result := SecondsBetween(UnixDateDelta, LDate);
  if LDate < UnixDateDelta then
     Result := -Result;
 end;



procedure TForm1.Button1Click(Sender: TObject);
var
  lDate: TDateTime;
begin
  lDate := now;
  Memo1.Lines.Add('lokale Zeit: ' + dateTimeToStr(lDate));
  Memo1.Lines.Add('standort Utc: ' + dateTimeToStr(DateTimeToUtc(lDate)));
  Memo1.Lines.Add('lokale Zeit Unix: ' + intToStr(DateTimeToUnix(lDate, true)));
  Memo1.Lines.Add('standort UTC Unix: ' + intToStr(DateTimeToUnix(lDate, false)));
end;

Code:
lokale Zeit:      20.12.2020 09:11:28
standort Utc:     20.12.2020 08:11:28
lokale Zeit Unix: 1608455488
standort UTC Unix: 1608451888
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat