You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP获取Windows系统下图片或视频的真实创建时间

问题原因分析

Windows资源管理器中针对图片、视频类媒体文件显示的「date」列,不是系统层面存储的文件创建/修改/访问时间,而是媒体文件自身内置元数据中记录的生成时间:图片对应EXIF信息里的拍摄时间,视频对应容器元数据里的内容创建时间。
你通过PHP的filemtime/filectime/fileatime获取到的2021年8月时间,是这批文件被拷贝到当前存储磁盘的时间,属于系统级的文件属性,和媒体本身的生成时间是完全独立的两个数据。

PHP获取该日期的实现方法

分两类文件处理:

图片类文件(JPG、TIFF等支持EXIF的格式)

  • 先开启PHP的exif扩展:编辑php.ini配置文件,删除extension=exif前的注释分号,重启服务生效。
  • 调用exif_read_data()函数读取EXIF中的DateTimeOriginal字段即可,示例代码如下:
$exif = exif_read_data('你的图片路径.jpg');
$mediaCreateDate = isset($exif['DateTimeOriginal']) ? $exif['DateTimeOriginal'] : '无内置生成时间';
echo $mediaCreateDate;

视频类文件

PHP原生不支持读取视频元数据,需要借助FFmpeg配套的ffprobe工具实现:

  • 先在Windows系统安装FFmpeg,将FFmpeg的bin目录加入系统环境变量PATH,确保命令行可以直接调用ffprobe。
  • 通过PHP执行系统命令调用ffprobe读取视频元数据中的creation_time字段,示例代码如下:
$videoPath = '你的视频路径.mp4';
$cmd = "ffprobe -v error -show_entries format_tags=creation_time -of default=noprint_wrappers=1:nokey=1 \"$videoPath\"";
$mediaCreateDate = trim(shell_exec($cmd));
echo $mediaCreateDate ?: '无内置生成时间';
注意事项
  • 经过二次压制、转码的媒体文件可能丢失内置元数据,该场景下只能回退使用系统级的文件时间属性。
  • 批量处理文件时建议直接写ffprobe的绝对路径,避免环境变量配置异常导致命令调用失败。

内容的提问来源于stack exchange,提问作者Werner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:48:01