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

Phi*_*hil 15 windows file-management

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

Dav*_*ill 25

时间戳分辨率

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
Run Code Online (Sandbox Code Playgroud)

创建日期20150329221650.080654+060是一个时间戳,格式如下:

yyyymmddHHMMSS.xxxxxxsUUU
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • 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(来自cygwinmingw安装)。

例子:

DavidPostill@Hal /f/test
$ stat test.txt | grep Birth
 Birth: 2015-03-29 22:16:50.080654200 +0100
Run Code Online (Sandbox Code Playgroud)

用于比较的目录输出

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
Run Code Online (Sandbox Code Playgroud)

进一步阅读

  • 注意事项:仅仅因为时间戳包含高频数字,例如 100 纳秒的数字,并不意味着时钟可以用作 100ns 范围内的可靠时间源。它只是指出有很多内容 [希望] 是单调的,并且与“实时”时间大致相关。 (4认同)