为了账号安全,请及时绑定邮箱和手机立即绑定

ZipArchive 忽略放在 .zip 文件中的文件的 date_default_timezone

ZipArchive 忽略放在 .zip 文件中的文件的 date_default_timezone

PHP
大话西游666 2022-01-24 10:37:01
我在7.0.33Linux 服务器(共享网络托管)上运行 PHP。有了date_default_timezone_set('Europe/Rome');我可以正确设置我的时区。echo date('Y-m-d H:i:s'); 显示正确的日期时间。但是添加在其中的文件.zip获取ZipArchive服务器日期时间。文件的源是动态创建的。这是我用来压缩文件的代码:$zip = new ZipArchive;$zip->open($pathZip, ZipArchive::CREATE);foreach($fileList as $fileName => $fileContents){    $zip->addFromString($fileName, $fileContents);}$zip->close();// Note: I removed all try-catch and false returns checks to simplify the code如何在.zip维护设置的时区中添加文件date_default_timezone_set,可能使用ZipArchive?我已经阅读了这篇文章,但它已经很老了。
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

ZipArchive 不支持此功能。


我建议您使用简单的包装器来处理 zips - ZipStream-PHP


您的基本用例如下所示:


$resultArchive = fopen($pathZip, 'w');


$options = new ZipStream\Option\Archive();

$options->setSendHttpHeaders(false);

$options->setOutputStream($resultArchive);


$zip = new ZipStream\ZipStream('example.zip', $options);


foreach($fileList as $fileName => $fileContents)

{

    $fileOptions = new ZipStream\Option\File();

    $fileOptions->setTime(new \DateTime()); // set your custom date, by default is NOW

    $zip->addFile($fileName, $fileContents, $fileOptions);

}


$zip->finish();


fclose($resultArchive);


查看完整回答
反对 回复 2022-01-24
?
守着一只汪

TA贡献1872条经验 获得超3个赞

将文件日期存储在 zip 中将始终使用文件系统日期,因为添加文件时没有更改文件日期的功能,您可以在添加文件之前touch()文件。


时区设置仅用于显示时间,设置时区不影响时间戳。


$date1   = new DateTime('now', new DateTimeZone("UTC"));

$date2   = new DateTime('now', new DateTimeZone('Europe/Rome'));

echo $date1->getTimestamp() . PHP_EOL;

echo $date2->getTimestamp() . PHP_EOL;

结果:


1569568587

1569568587

您可以获取时区的偏移量并更改时间。


$offset = $date2->getOffset();

$newTime = $date2->getTimestamp() + $offset;

$res = touch($fileName, $newTime);


查看完整回答
反对 回复 2022-01-24
?
富国沪深

TA贡献1790条经验 获得超9个赞

文件上传时间与服务器时间有关。所以,你可以做一个技巧来做到这一点。例如,在 db 上存储文件上传时间 (upload_time, upload_my_time)


查看完整回答
反对 回复 2022-01-24
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信