获取文件创建时间(以毫秒为单位)

获取文件创建时间(以毫秒为单位)

有没有办法以更高的精度获取 Windows 中文件的创建时间?我想以毫秒为单位获取 mp4 视频的创建时间。这可能吗?

答案1

时间戳解析

Windows中文件的创建时间戳取决于文件系统:

  • FAT/VFAT 的最大分辨率为 2s

  • NTFS 的最大分辨率为 100 ns


wmic 解决方案

您可以使用它wmic来检索文件创建日期(精确到微秒)。

例子:

F:\test>wmic datafile where name="f:\\test\\test.txt" get creationdate | findstr /brc:[0-9]
20150329221650.080654+060

creationdate20150329221650.080654+060是一个时间戳,格式如下:

yyyymmddHHMMSS.xxxxxxsUUU

在哪里:

  • yyyy四位数年份(0000 至 9999)。

  • mm两位数的月份(01 至 12)。

  • dd两位数的月份日期(01 至 31)。

  • HH采用 24 小时制(00 至 23)表示一天中的两位数小时数。

  • MM小时内的两位数分钟数(00 至 59)。

  • SS分钟内的两位数秒数(00 至 59)。

  • xxxxxx秒内的六位微秒数(000000 至 999999)

  • s加号 ( +) 或减号 ( -) 表示与协调世界时 (UTC) 的正偏移或负偏移。

  • UUU三位数字的偏移量,表示原始时区与 UTC 的偏差分钟数。


统计解决方案

您还可以使用stat(从赛格威或者明伟安装)。

例子:

DavidPostill@Hal /f/test
$ stat test.txt | grep Birth
 Birth: 2015-03-29 22:16:50.080654200 +0100

用于比较的 dir 输出

F:\test>dir /t:c test.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

29/03/2015  22:16                32 test.txt
               1 File(s)             32 bytes
               0 Dir(s)  1,798,546,849,792 bytes free

进一步阅读

答案2

这里演示了一种巧妙的方法:https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-with-100-nsec-granularity

它使用 VBScript 查询 WMI 的 CIM 数据库并返回FILETIME与文件相关的结构。

还有一些开源工具可以检查媒体文件的元数据,例如EXIF工具其主要目的是管理数码相机创建的媒体的元数据。

答案3

我找到了一种在 Matlab 中获得此信息的方法:

您可以使用获取文件时间Jan Simon 编写的函数。如果您不想编译自己的 mex 文件,也可以下载已编译的文件这里

它不像使用 wmic(仅 ms)那样精确,但对于我的目的来说它是合适的。

答案4

取决于文件系统:FAT 具有 2 秒分辨率,NTFS理论上具有100纳秒的分辨率,但实际分辨率为 10 毫秒也就是说,中断的优先级高于磁盘 I/O,而且我不确定写入缓存对时间戳有何影响。多媒体计时器针对准确性进行了优化,因此是实现计时的首选方式。

您可以使用现有工具,例如XYplorer要查看高分辨率时间戳,或者XYplorer 显示 ms,您可能更愿意编写自己的应用程序。使用File.GetCreationTime 方法;它返回一个带毫秒的 DateTime 结构财产。

相关内容