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

发布于 2024-11-27 00:11:41 字数 233 浏览 0 评论 0原文

GetFileAttributesEx 返回文件系统返回的日期(未修改)。 NTFS 以 UTC 格式存储日期,FAT 以本地时区存储日期。如果不知道时区,约会就毫无价值。

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

GetFileAttributesEx returns the date that the filesystem returns, unmodified. NTFS stores dates in UTC, and FAT stores them in the local time zone. Without knowing the time zone, a date is pretty worthless.

What is the best way to reliably get the last modified date of a file in UTC? Is the best way really to just check for NTFS vs. FAT? What if you are using a different filesystem? Is there a different API I can use? Is there some elegant code someone can post here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

剩一世无双 2024-12-04 00:11:41

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

引用自 'FileTimes' MSDN文档:

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

Use the Win32 API GetFileTime, it returns all its times in UTC. Yes, FAT file system does store these values in local time, but the Win32 API is doing the UTC conversion for you.

Quote from the 'FileTimes' MSDN documentation:

GetFileTime retrieves cached UTC times from the FAT file system.

瞄了个咪的 2024-12-04 00:11:41

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

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

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

The FAT file system records times on disk in local time. GetFileTime retrieves cached UTC times from the FAT file system. When it becomes daylight saving time, the time retrieved by GetFileTime is off an hour, because the cache is not updated. When you restart the computer, the cached time that GetFileTime retrieves is correct. FindFirstFile retrieves the local time from the FAT file system and converts it to UTC by using the current settings for the time zone and daylight saving time. Therefore, if it is daylight saving time, FindFirstFile takes daylight saving time into account, even if the file time you are converting is in standard time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文