我有这段代码可以在 Windows 下的 FreePascal 中运行,需要将其转换为 Linux,但我完全不知道时区偏差值:
function DateTimeToInternetTime(const aDateTime: TDateTime): String;
{$IFDEF WIN32}
var
LocalTimeZone: TTimeZoneInformation;
{$ENDIF ~WIN32}
begin
{$IFDEF WIN32}
// eg. Sun, 06 Nov 1994 08:49:37 GMT RFC 822, updated by 1123
Result := FormatDateTime('ddd, dd mmm yyyy hh:nn:ss', aDateTime);
// Get the Local Time Zone Bias and report as GMT +/-Bias
GetTimeZoneInformation(LocalTimeZone);
Result := Result + 'GMT ' + IntToStr(LocalTimeZone.Bias div 60);
{$ELSE}
// !!!! Here I need the above code translated !!!!
Result := 'Sat, 06 Jun 2009 18:00:00 GMT 0000';
{$ENDIF ~WIN32}
end;
最佳答案
这个人有答案:http://www.mail-archive.com/fpc-pascal@lists.freepascal.org/msg08467.html
因此您需要添加 uses 子句:
uses unix,sysutils,baseunix
保存时间/时区的变量:
var
timeval: TTimeVal;
timezone: PTimeZone;
..并获得“向西分钟”。
{$ELSE}
Result := FormatDateTime('ddd, dd mmm yyyy hh:nn:ss', aDateTime);
TimeZone := nil;
fpGetTimeOfDay (@TimeVal, TimeZone);
Result := Result + 'GMT ' + IntToStr(timezone^.tz_minuteswest div 60);
{$ENDIF ~WIN32}
关于linux - 在 FreePascal 中从 Windows 到 Linux 的时区代码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/961953/