Каково самое раннее значение метки времени, поддерживаемое в формате ZIP-файла?

Я пытаюсь сохранить даты как последнюю метку времени модификации в ZIP-файле. Похоже, что формат ZIP поддерживает только даты после 1980-01-01 в качестве последнего времени модификации (по крайней мере, через Java API java.утиль.застежка-молния.ZipEntry )

это правильно? Действительно ли самая ранняя поддерживаемая временная метка модификации 1980-01-01 00:00: 00? Я попытался найти некоторые ссылки, чтобы проверить это, но я не мог найти ни одного.

1 ответов


метки времени входа Zip записываются только два 2 секунды. Этот отражает точность DOS временные метки, используемые при PKZIP создан. Этот номер записан в Молния будет отметка усе, не ближайшие 2 секунды.

при архивировании и восстановлении файла, у него больше не будет метки времени точно соответствует оригиналу. Этот выше и за пределами он похожая проблема с Java с использованием 1 миллисекунды точность и Использование Microsoft Windows Шагом 100 нс. Архиваторами pkzip формат выводится из MS DOS дней и следовательно использует только 16 битов для времени и 16 бит на сегодняшний день. Есть определен расширенный штамп времени в пересмотренном варианте Формат PKZIP, но Java не использует он.

внутри zip-файлов, даты и время хранится в локальном времени в 16 битах, не UTC как обычно, используя древний формат MS DOS. Бит 0 является крайней мере, означающее немного. Формат прямой порядок байтов. Не было комната в 16 бит точно представлять время даже до секунды, поэтому секунды поле содержит секунды, разделенные на два, давая точность только четным второй.

это означает кажущееся время файлов внутри молния вдруг отличаются час по сравнению с их несжатые аналоги каждый раз у вас есть переход на летнее время. Он также означает, что утилита zip будет извлечение другого времени UTC из Дата элемента Zip в зависимости от того, часовой пояс расчет был сделан. Это просто смешно. Требуется формат PKZIP современная метка времени на основе UTC, чтобы избежать эта аномалия.

для того чтобы сделать дела хуже, стандартные инструменты как WinZip или PKZIP всегда будет круглый время до следующей секунды когда они восстановят, таким образом возможно создание файла одна секунда до двух секунды моложе. В JDK (т. е. javaToDosTime в ZipEntry раундов время вниз, тем самым делая файл один на две секунды старше.

формат не поддерживает даты до 1980-01-01 0: 00 UTC. Избегать дат файл 1980-01-01 или раньше (местное или UTC времени).

подождите! Становится еще хуже. Фил Кац, когда он задокументировал формат Zip, сделал не потрудитесь уточнить, местное время, используемое в архиве будь то дневное или стандартное время.

и его шапку... информация-молнии, JSE и TrueZIP применить расписание DST (дней где DST начинался и заканчивался в любом данном год) для любого дата преобразования время между системным временем и DOS дата-время. Так и должно быть. Проводник Vista, 7-Zip и WinZip применяйте только сбережения DST, но не примените расписание. Поэтому они используют текущая экономия DST на любую дату, когда преобразование времени между системой времени и DOS дата/время. Это просто мокрый.

http://mindprod.com/jgloss/zip.html

tar файлы так намного лучше.