PHPZip\Zip\Core\ZipUtils::getDosTime PHP Method

getDosTime() public static method

Calculate the 2 byte dos time used in the zip entries.
Author: A. Grandt ([email protected])
public static getDosTime ( integer $timestamp ) : string
$timestamp integer
return string 2-byte encoded DOS Date
    public static function getDosTime($timestamp = 0) {
        $timestamp = (int)$timestamp;
        $oldTZ = @date_default_timezone_get();
        date_default_timezone_set('UTC');

        $date = ($timestamp == 0 ? getdate() : getdate($timestamp));
        date_default_timezone_set($oldTZ);

        if ($date["year"] >= 1980) { // Dos dates start on 1 Jan 1980
            return pack("V", (($date["mday"] + ($date["mon"] << 5) + (($date["year"] - 1980) << 9)) << 16) |
                (($date["seconds"] >> 1) + ($date["minutes"] << 5) + ($date["hours"] << 11)));
        }
        return "\x00\x00\x00\x00";
    }

Usage Example

 public static function createDirEntry($path, $timestamp)
 {
     $fileEntry = new ZipFileEntry();
     $fileEntry->gzType = 0;
     $fileEntry->gpFlags = 0;
     $fileEntry->fileCRC32 = 0;
     $fileEntry->externalFileAttributes = ZipFileEntry::EXT_FILE_ATTR_DIR;
     $fileEntry->gzLength = 0;
     $fileEntry->dataLength = 0;
     $fileEntry->isDirectory = true;
     $fileEntry->dosTime = ZipUtils::getDosTime($timestamp);
     $fileEntry->path = $path;
     $ef = new ExtendedTimeStampExtraField();
     $ef->setModTime($timestamp);
     $ef->setAccessTime($timestamp);
     $fileEntry->addExtraField($ef);
     $ef = new GenericExtraField();
     $ef->header = AbstractExtraField::HEADER_UNIX_TYPE_3;
     $ef->setFieldData("รจ", '');
     $fileEntry->addExtraField($ef);
     return $fileEntry;
 }
All Usage Examples Of PHPZip\Zip\Core\ZipUtils::getDosTime