サーバーからファイルをダウンロードしています (バイトと lastwritetime 属性の DateTime のみを取得します)。データをダウンロードした後、ローカル マシンに新しいファイルを作成し、lastwritetime 属性を設定したいと考えています。このために、私は次の方法を使用しています:
procedure SetFileDate(const FileName: string; NewDate: TDateTime);
var
FileDate, FileHandle: Integer;
begin
try
FileDate := DateTimeToFileDate(NewDate);
FileHandle := FileOpen(FileName, fmOpenReadWrite or fmShareDenyWrite);
if FileHandle > 0 then
begin
FileSetDate(FileHandle, FileDate);
FileClose(FileHandle);
end;
except
begin
// ERROR Log
err.Msg('FileReqThrd.SetFileDate');
end;
end;
end;
「NewDate」パラメーターには、サーバーから取得した DateTime を使用します。このようにサーバーから DateTime を変換して、有効な lastwritetime を取得しようとしました (WCF からデータを要求しているため、UTCDateTime に変換しています。WCF サービスからの手つかずのデータは TXSDateTime です):
TDateTime cloudFileDateTime := StrToDateTime(DateTimeToStr(cloudDownloadResult.FileCloudData.Lastwritetime.AsUTCDateTime));
しかし、最終的に、冬期に lastwritetime を持つファイルの lastwritetime 属性が -1h で間違っています。
私の問題を理解していただき、解決方法を教えていただければ幸いです。
よろしくお願いします