2015-07-20 132 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