如何以UTC格式获取修改日期

时间:2011-07-31 20:30:57

标签: winapi filesystems

GetFileAttributesEx返回文件系统返回的日期,未经修改。 NTFS以UTC格式存储日期,FAT将它们存储在本地时区。在不知道时区的情况下,约会毫无价值。

以UTC格式可靠地获取文件的最后修改日期的最佳方法是什么?这是检查NTFS与FAT的最佳方法吗?如果您使用不同的文件系统怎么办?我可以使用不同的API吗?有人可以在这里发布一些优雅的代码吗?

2 个答案:

答案 0 :(得分:3)

使用Win32 API GetFileTime,它以UTC格式返回所有时间。是的,FAT文件系统确实以本地时间存储这些值,但Win32 API正在为您进行UTC转换。

引用来自“FileTimes”MSDN文档:

  

GetFileTime从FAT文件系统中检索缓存的UTC时间。

答案 1 :(得分:2)

来自http://msdn.microsoft.com/en-us/library/ms724290%28v=vs.85%29.aspx

FAT文件系统以本地时间记录磁盘上的时间。 GetFileTime从FAT文件系统中检索缓存的UTC时间。当它变为夏令时时,GetFileTime检索的时间超过一小时,因为缓存未更新。重新启动计算机时,GetFileTime检索的缓存时间是正确的。 FindFirstFile从FAT文件系统中检索本地时间,并使用当前时区和夏令时设置将其转换为UTC。因此,如果是夏令时,FindFirstFile会将夏令时考虑在内,即使您要转换的文件时间是标准时间。