Packmatic.Field.Shared.Timestamp (Packmatic v2.1.0)

Copy Markdown View Source

The Shared Timestamp field is emitted in both Local and Central File Headers, and is emitted in DOS (FAT) format.

The time and date components are represented as little-endian, 16-bit integers, though they are first built separately

Structure

SizeContent
2 bytesHour (5 bits), Minute (6 bits), Second / 2 (5 bits)
2 bytesYear Since 1980 (7 bits), Month (4 bits), Day (5 bits)

Notes

See Erlang/OTP’s zip module: dos_date_time_to_datetime/2.

If the Timestamp given is prior to midnight, 1 January, 1980, it is also coerced to midnight, 1 January, 1980.

If the Timestamp is on or after midnight, 1 January, 2108, then it can no longer be correctly represented within the limitations of the underlying field, and so is coerced to the previous representatable tick: 23:58, 31 December, 2107.

Summary

Types

t()

@type t() :: %Packmatic.Field.Shared.Timestamp{timestamp: DateTime.t()}