快速分析

快速分析

我想將一些舊掃描圖片的建立日期設定為 1970 年的日期。我認為 NTFS 可能會回到 1600 年代。到底是怎麼回事?

答案1

快速分析

瀏覽資料夾時,Windows 資源管理器不會顯示特定範圍以外的日期:

MS-DOS 日期格式只能表示 1/1/1980 到 12/31/2107 之間的日期。

來源:FileTimeToDosDateTime 函數

這可以透過手動設定日期來確認:

截圖1

我的假設是這種行為與向後相容性有關。什麼時候NTFS不存在,創建、修改和存取日期被設計為每個佔用 16 位元(2 個位元組)。資訊的打包方式如下:

Bits | Description
-------------------------------------------------------
0–4  | Day (1-31)
5–8  | Month (1 = January, 2 = February, etc.)
9-15 | Year offset from 1980 (0 = 1980, 1 = 1981, etc.)

為了節省位,年份不會儲存為整數;而是儲存為整數。而是使用偏移量。由於有 7 位,這意味著2^7 = 128可能的值,即 1980-2107。

至於NTFS,文檔是這樣說的:

A文件時間是一個 64 位元值,表示自 1601 年 1 月 1 日凌晨 12:00 協調世界時 (UTC) 以來經過的 100 奈秒間隔數。系統記錄應用程式建立、存取和寫入檔案的檔案時間。

NTFS 檔案系統以 UTC 格式儲存時間值,因此它們不受時區或夏令時變更的影響。 FAT 檔案系統儲存是基於電腦本地時間的時間值。

來源:文件時間

進一步閱讀


解決方法

在某些情況下,您也許可以透過以下方式繞過此問題EXIF標籤:

截圖2

檔案屬性對話方塊可以顯示底層檔案系統支援的任何日期:

截圖3

使用以下命令時,命令列介面也是如此dir

01/01/1601  02:23 AM                 0 1-oldest.txt
01/01/1970  02:23 AM                 0 2-older.txt
01/01/1980  02:23 AM                 0 3-old.txt
01/01/2014  02:23 AM                 0 4-current.txt
01/01/2107  02:23 AM                 0 5-new.txt
01/01/9999  02:23 AM                 0 6-newer.txt

第三方程序,例如7-拉鍊也可能不受影響:

截圖4

相關內容