首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Delphi获取LastAccessTime

用Delphi获取LastAccessTime
EN

Stack Overflow用户
提问于 2009-07-03 02:44:26
回答 3查看 565关注 0票数 0

我目前正在使用下面的指导原则通过Delphi http://www.latiumsoftware.com/en/delphi/00007.php获取文件的"LastAccessTime“

使用FindNext访问TSearchRec对象,我可以从该对象访问类型为TFileTime的ftLastWriteTime

当将其转换为TDateTime对象(使用上面的源),然后输出DateTimeToString时,我得到了日期和时间,但小时似乎是文件ftLastWriteTime小时值中两位数字的总和。

也就是说,我得到的不是2009/09/03 13:45,而是2009/09/03 04:45,或者是2009/09/03 17:45,而不是2009/09/03 08:45

欢迎提出任何意见,提前谢谢!

EN

回答 3

Stack Overflow用户

发布于 2009-07-03 06:50:26

“如往常一样”;-)我将指向包含函数DSiGetFileTimes的DSiWin32,该函数返回创建时间、上次访问时间和上次修改时间。

代码语言:javascript
复制
function DSiFileTimeToDateTime(fileTime: TFileTime; var dateTime: TDateTime): boolean;
var
  sysTime: TSystemTime;
begin
  Result := FileTimeToSystemTime(fileTime, sysTime);
  if Result then
    dateTime := SystemTimeToDateTime(sysTime);
end; { DSiFileTimeToDateTime }

function  DSiGetFileTimes(const fileName: string; var creationTime, lastAccessTime,
  lastModificationTime: TDateTime): boolean;
var
  fileHandle            : cardinal;
  fsCreationTime        : TFileTime;
  fsLastAccessTime      : TFileTime;
  fsLastModificationTime: TFileTime;
begin
  Result := false;
  fileHandle := CreateFile(PChar(fileName), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, 0, 0);
  if fileHandle <> INVALID_HANDLE_VALUE then try
    Result :=
      GetFileTime(fileHandle, @fsCreationTime, @fsLastAccessTime,
         @fsLastModificationTime) and
      DSiFileTimeToDateTime(fsCreationTime, creationTime) and
      DSiFileTimeToDateTime(fsLastAccessTime, lastAccessTime) and
      DSiFileTimeToDateTime(fsLastModificationTime, lastModificationTime);
  finally
    CloseHandle(fileHandle);
  end;
end; { DSiGetFileTimes }
票数 5
EN

Stack Overflow用户

发布于 2009-07-03 03:05:52

通常,在我发布第一篇文章20分钟后,我就解决了自己的问题。

链接代码的作者avbove有相同代码的两个版本,第二个版本发布在这里http://www.latiumsoftware.com/en/delphi/00051.php

问题解决了!-我认为DOS库对Win32时间戳的解释是不正确的,并延续到了后面的代码中。也许不是?如果时间允许,我会进一步调查。

票数 1
EN

Stack Overflow用户

发布于 2009-07-03 04:19:51

时间戳采用UTC,而不是本地时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1077579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档