Winapi 如何在UTC中获取修改的日期

Winapi 如何在UTC中获取修改的日期,winapi,filesystems,Winapi,Filesystems,GetFileAttributesEx返回文件系统返回的未修改日期。NTFS将日期存储在UTC,FAT将日期存储在本地时区。如果不知道时区,日期是毫无价值的 用UTC可靠地获取文件最后修改日期的最佳方法是什么?真正检查NTFS与FAT的最佳方法是什么?如果您使用的是不同的文件系统怎么办?我可以使用不同的API吗?有人可以在这里发布一些优雅的代码吗?使用Win32 API,它以UTC返回所有时间。是的,FAT文件系统确实在本地时间存储这些值,但Win32 API正在为您进行UTC转换 引用“”MS

GetFileAttributesEx
返回文件系统返回的未修改日期。NTFS将日期存储在UTC,FAT将日期存储在本地时区。如果不知道时区,日期是毫无价值的

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

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

引用“”MSDN文档:

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

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

引用“”MSDN文档:

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


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

from


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

该函数可能会返回“未修改”的时间戳,但仍需要将FAT时间格式转换为FILETIME格式。它可能会在内部调用,但该函数的文档似乎并不容易理解。这是一个很好的问题——我也遇到了同样的情况,我希望有人能粘贴一个函数来实现这一点,以避免为了填补MSDN文档的模糊性而不得不进行研究。例如,他们给出了一个示例,其中似乎假定文件时间总是以UTC格式返回……该函数可能返回“未修改”的时间戳,但仍需要将FAT时间格式转换为FILETIME格式。它可能会在内部调用,但该函数的文档似乎并不容易理解。这是一个很好的问题——我也遇到了同样的情况,我希望有人能粘贴一个函数来实现这一点,以避免为了填补MSDN文档的模糊性而不得不进行研究。例如,他们给出了一个似乎假设文件时间总是以UTC返回的示例。。。