HEADER_ID
HEADER_ID = 0x5455 : int
Extended Timestamp Extra Field: ==============================.
The following is the layout of the extended-timestamp extra block. (Last Revision 19970118)
Local-header version:
Value Size Description
(time) 0x5455 Short tag for this extra block type ("UT") TSize Short total data size for this block Flags Byte info bits (ModTime) Long time of last modification (UTC/GMT) (AcTime) Long time of last access (UTC/GMT) (CrTime) Long time of original creation (UTC/GMT)
Central-header version:
Value Size Description
(time) 0x5455 Short tag for this extra block type ("UT") TSize Short total data size for this block Flags Byte info bits (refers to local header!) (ModTime) Long time of last modification (UTC/GMT)
The central-header extra field contains the modification time only, or no timestamp at all. TSize is used to flag its presence or absence. But note:
If "Flags" indicates that Modtime is present in the local header field, it MUST be present in the central header field, too! This correspondence is required because the modification time value may be used to support trans-timezone freshening and updating operations with zip archives.
The time values are in standard Unix signed-long format, indicating the number of seconds since 1 January 1970 00:00:00. The times are relative to Coordinated Universal Time (UTC), also sometimes referred to as Greenwich Mean Time (GMT). To convert to local time, the software must know the local timezone offset from UTC/GMT.
The lower three bits of Flags in both headers indicate which time- stamps are present in the LOCAL extra field:
bit 0 if set, modification time is present bit 1 if set, access time is present bit 2 if set, creation time is present bits 3-7 reserved for additional timestamps; not set
Those times that are present will appear in the order indicated, but any combination of times may be omitted. (Creation time may be present without access time, for example.) TSize should equal (1 + 4*(number of set bits in Flags)), as the block is currently defined. Other timestamps may be added in the future.
$flags : int
$modifyTime : int|null
$accessTime : int|null
$createTime : int|null
unpackLocalFileData(string $buffer, \PhpZip\Model\ZipEntry|null $entry = null) : \PhpZip\Model\Extra\Fields\ExtendedTimestampExtraField
Populate data from this array as if it was in local file data.
string | $buffer | the buffer to read data from |
\PhpZip\Model\ZipEntry|null | $entry |
unpackCentralDirData(string $buffer, \PhpZip\Model\ZipEntry|null $entry = null) : \PhpZip\Model\Extra\Fields\ExtendedTimestampExtraField
Populate data from this array as if it was in central directory data.
string | $buffer | the buffer to read data from |
\PhpZip\Model\ZipEntry|null | $entry |
getFlags() : int
Gets flags byte.
The flags byte tells us which of the three datestamp fields are present in the data: bit0 - modify time bit1 - access time bit2 - create time
Only first 3 bits of flags are used according to the latest version of the spec (December 2012).
flags byte indicating which of the three datestamp fields are present
getCreateTime() : int|null
Returns the create time (seconds since epoch) of this zip entry, or null if no such timestamp exists in the zip entry.
Note: modern linux file systems (e.g., ext2) do not appear to store a "create time" value, and so it's usually omitted altogether in the zip extra field. Perhaps other unix systems track this.
create time (seconds since epoch) or null
getModifyDateTime() : \DateTimeInterface|null
Returns the modify time as a \DateTimeInterface of this zip entry, or null if no such timestamp exists in the zip entry.
The milliseconds are always zeroed out, since the underlying data offers only per-second precision.
modify time as \DateTimeInterface or null
getAccessDateTime() : \DateTimeInterface|null
Returns the access time as a \DateTimeInterface of this zip entry, or null if no such timestamp exists in the zip entry.
The milliseconds are always zeroed out, since the underlying data offers only per-second precision.
access time as \DateTimeInterface or null
getCreateDateTime() : \DateTimeInterface|null
Returns the create time as a a \DateTimeInterface of this zip entry, or null if no such timestamp exists in the zip entry.
The milliseconds are always zeroed out, since the underlying data offers only per-second precision.
Note: modern linux file systems (e.g., ext2) do not appear to store a "create time" value, and so it's usually omitted altogether in the zip extra field. Perhaps other unix systems track $this->.
create time as \DateTimeInterface or null