Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
Delphi 10.4 Sydney
|
AW: DateTimeToUnix 1 stunde zurück
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
|
|
Zitat
|