2015-07-20 244 views
0

According to Wikipedia,对于上次修改时间,FAT32的日期分辨率为2秒。此文件时间可以在WinAPI中获得,并且在C#中使用File.IO作为DateTime,这两者都涉及此问题。Windows上的FAT日期分辨率时间戳

日期分辨率在实践中意味着什么?这是否意味着它只能以2秒的时间间隔为最后一次修改的文件时间加上时间戳,还是说它的时间戳记的日期在2秒内才是准确的?

换言之(使用yyyy-MM-dd HH:mm:ss:fffffffDateTime format作为例子),不是...

  1. 时间戳,使得它不限于2-第二偶数的时间间隔,如:2015-07-16 14:28:36:00000002015-07-16 14:28:38:00000002015-07-16 14:28:40:0000000

...或...

  • 任意时间戳,只是使时间只在一定的时间间隔内是准确的:2015-07-16 14:28:36:1234567 - 这意味着最后一次写入可能在此时间之前的2秒内(2015-07-16 14:28:34:1234567)一直到此时间之后的2秒内(2015-07-16 14:28:38:1234567)实际发生?

  • 还有其他的东西吗?

  • +3

    请记住,FAT只记录*本地*时间。它不知道时区。如果您将FAT格式的USB驱动器从一个系统转移到另一个系统,则不能保证时区匹配。此外,在回退夏令时转换期间(例如,在美国重复01:00-01:59时),它不能消除时间差异。 NTFS记录UTC时间,所以它没有这个问题。 –

    +0

    @MattJohnson有趣的是,谢谢你的注意。 – Alexandru

    回答

    2

    这意味着时间秒数只能是偶数整数。

    directory entry for the FAT file system只有一个5位字段用于存储时间秒数。这将字段中存储的数字限制在0-31的范围内,该范围乘以2以获得秒数。 (该字段中的值30和31是无效的。)

    +0

    非常感谢。真棒参考。事实上,在偏移量0x0E处,它表明这个值在位4-0中包含秒/ 2(其中秒可以从0-29)。在这些数字(0-29)中,将它们中的任何一个乘以2得到实际的秒数都会产生一个限制在2秒钟甚至是时间间隔内的数字。 – Alexandru