我想將日期作爲最新修改時間戳存儲在ZIP文件中。看來ZIP格式僅支持1980-01-01之後的日期作爲最後修改時間(至少通過Java API java.util.zip.ZipEntry)ZIP文件格式支持的最早時間戳值是什麼?
這是正確的嗎?最早支持的修改時間戳記1980-01-01 00:00:00?我試圖找到一些參考來驗證這一點,但我找不到任何。
我想將日期作爲最新修改時間戳存儲在ZIP文件中。看來ZIP格式僅支持1980-01-01之後的日期作爲最後修改時間(至少通過Java API java.util.zip.ZipEntry)ZIP文件格式支持的最早時間戳值是什麼?
這是正確的嗎?最早支持的修改時間戳記1980-01-01 00:00:00?我試圖找到一些參考來驗證這一點,但我找不到任何。
僅記錄郵編輸入時間戳 到2秒精度。這個 反映了當創建PKZIP爲 時使用的DOS 時間戳的準確性。記錄在 Zip中的數字將被截斷, 不是最接近的2秒。
當您存檔和恢復文件時,它將不再有與原始文件精確匹配的時間戳 。此 超出了他的類似問題 與Java使用1毫秒 精度和Microsoft Windows使用 100納秒增量。 PKZIP 格式源自MS DOS天,因此 因此僅使用16位時間和012位16位數據作爲日期。在修訂後的 PKZIP格式中定義了 擴展時間戳,但Java不使用 它。
裏面的zip文件,日期和時間都存儲在 當地時間16位的,不 UTC這是常規,使用 古MS DOS格式。位0是 最不顯着的位。格式是 little-endian。在 的16位中沒有空間來準確地表示時間 甚至到第二個,所以秒數 字段包含的秒數除以 兩個,僅給出第二秒的精度。
這意味着文件 一個zip內的視時會突然由 一個小時用不同每次 你有夏令改變他們的 未壓縮的同行相比。它 也意味着一個zip實用程序將從 Zip會員日期提取與UTC時間不同的UTC時間,具體取決於計算完成的時區。 這太可笑了。 PKZIP格式需要現在基於UTC的時間戳 以避免 這些異常情況。
更糟糕的是,標準工具 像WinZip或PKZIP永遠一輪 的時間到下一個甚至第二 當他們恢復,從而有可能使 文件的一種第二兩個 秒年輕。在JDK(即 javaToDosTime在ZipEntry的舍入 時間下來,從而使文件一個 兩秒鐘以上。
的格式不支持日期 之前1980-01-01 0:00 UTC避免 文件日期1980-01-01或更早版本 (本地或UTC時間)。
等等!它變得更糟。菲爾卡茨, 當他記錄的Zip格式,沒有 沒有指定是否 當地時間檔案中使用 是日光或標準時間。
更糟糕的是關閉...信息-ZIP,JSE和 TrueZIP應用DST時間表(天 其中DST開始了,並且在任何給定的 止年度)將系統時間和DOS 日期間 時候,任何日期/時間。這是應該的。 Vista的資源管理器,7-Zip和WinZip 僅適用於DST儲蓄,但不適用 適用時間表。因此,他們在 轉換系統時間 和DOS日期/時間之間的任何日期時使用 當前的DST節省。這只是 馬虎。
http://mindprod.com/jgloss/zip.html
tar
文件這麼好得多。