mirror of
https://github.com/wader/fq.git
synced 2024-11-25 23:13:19 +03:00
a83cac6021
MSDOS time/date was read in wrong order and also did not take into account that the bit ranges in the shortis are in little-endian. Remodel modification_time/date to be one struct with fat_time, fat_date LE shorts and then synthetic values for day, hours, minute etc and also a unix field with the timestamp as unix time. Also refactor and clenaup extra fields/extended code a bit. Fixes #792
12 lines
745 B
Markdown
12 lines
745 B
Markdown
Supports ZIP64.
|
|
|
|
## Timestamp and time zones
|
|
|
|
The timestamp accessed via `.local_files[].last_modification` is encoded in ZIP files using [MS-DOS representation](https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime) which lacks a known time zone. Probably the local time/date was used at creation. The `unix_guess` field in `last_modification` is a guess assuming the local time zone was UTC at creation.
|
|
|
|
### References
|
|
- https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
|
|
- https://opensource.apple.com/source/zip/zip-6/unzip/unzip/proginfo/extra.fld
|
|
- https://formats.kaitai.io/dos_datetime/
|
|
- https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime
|