Strona 1 z 1

[C++] Data modyfikacji pliku z nagłówku pliku ZIP

: 6 sty 2015, o 21:11
autor: jarzabek89
W nagłówku pliku ZIP-konkretniej w Local file header. Znajduje się informacja o dacie/godzinie ostatniej modyfikacji pliku.

Kod: Zaznacz cały

Offset	Bytes	Description
10	      2     File last modification time
12	      2	  File last modification date
Obie te informacja znajdują się na 2 bajtach.
Początkowo myślałem, że zrobię tak:

Kod: Zaznacz cały

	
ZIP.read(reinterpret_cast<char *>(&Dane[i].czas_ostatniej_modyfikacji), 2);
ZIP.read(reinterpret_cast<char *>(&Dane[i].data_ostatniej_modyfikacji), 2);
Gdzie:

Kod: Zaznacz cały

Dane[i].czas_ostatniej_modyfikacji
Dane[i].data_ostatniej_modyfikacji
to short int

Ale nijak wiedziałem jak to interpretować.
Zrobiłem tak:

Kod: Zaznacz cały

ZIP.read(reinterpret_cast<char *>(&Dane[i].data), 4);
i zapisywałem to do int,unsigned int. Kombinowałem i patrzyłem co zwraca mi:

Kod: Zaznacz cały

    
czas=Dane[i].data;
char * data = asctime(localtime( & czas ) );
cout << "Data: " <<data;
Ale nijak ma się to ze stanem faktycznym
Gdyby ktoś mógł podpowiedzieć jak to należy zrobić będę wdzięczny.

[C++] Data modyfikacji pliku z nagłówku pliku ZIP

: 6 sty 2015, o 22:50
autor: Afish
ZIP stosuje rozdziałkę dwusekundową, szczegóły na wiki:
The FAT filesystem of DOS has a timestamp resolution of only two seconds; .ZIP file records mimic this. As a result, the built-in timestamp resolution of files in a .ZIP archive is only two seconds, though extra fields can be used to store more precise timestamps. The .ZIP format has no notion of time zone, so timestamps are only meaningful if it is known what time zone they were created in.
A także na SO: ... ile-format

[C++] Data modyfikacji pliku z nagłówku pliku ZIP

: 6 sty 2015, o 23:37
autor: jarzabek89
Dzięki. W końcu udało mi się to rozszyfrować. Działa jak należy