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

PHP中filemtime()获取文件时间戳异常问题求助

解决filemtime()返回1970年时间戳的问题

嘿,Rahil,我来帮你搞定这个问题!你看到的1970年1月1日时间戳,本质是因为filemtime()函数找不到目标文件,返回了false——而date()函数会把false当作0来处理,也就是Unix纪元的起始时间。

问题根源

你的代码里路径拼接有语法错误:

$path="A2storage/'.$image.'";

这里双引号和单引号混用,导致最终生成的路径是A2storage/'.$image.'(把变量名当成了字符串的一部分),而不是正确的A2storage/实际文件名,自然找不到文件。

排查&修正步骤

  1. 修复路径拼接语法
    把路径改成正确的字符串拼接方式,二选一即可:

    • 用双引号直接解析变量:
      $path = "A2storage/$image";
      
    • 用单引号拼接:
      $path = 'A2storage/' . $image;
      
  2. 添加文件存在校验
    在调用filemtime()之前,先确认文件是否存在,避免返回错误值:

    if (file_exists($path)) {
        clearstatcache(true, $path); // 清除指定文件的状态缓存,确保获取最新时间
        $timestamp = filemtime($path);
        $date = date('Y-m-d H:i:s', $timestamp); // 记得补全date()的格式参数
    } else {
        $date = '文件不存在';
    }
    
  3. 用绝对路径更可靠
    相对路径容易受当前脚本执行目录影响,建议用__DIR__拼接绝对路径,确保定位准确:

    $path = __DIR__ . '/A2storage/' . $image;
    

修正后的完整代码片段

$count = 0; // 记得初始化count变量
foreach($images as $image) {
    $count += 1;
    if($count == 1) {
        echo '<div class="box boxgallery">';
    }
    
    // 修正后的路径与时间处理
    $path = __DIR__ . '/A2storage/' . $image;
    if (file_exists($path)) {
        clearstatcache(true, $path);
        $timestamp = filemtime($path);
        $date = date('Y-m-d H:i:s', $timestamp);
    } else {
        $date = "文件 $image 不存在";
    }
    
    // 示例:输出文件名称与修改时间
    echo "<div class='gallery-item'>
            <p>文件名:$image</p>
            <p>修改时间:$date</p>
          </div>";
    
    // 记得补充box的闭合逻辑(比如每N个文件闭合一次)
    if($count % 4 == 0) { // 假设每4个文件一组
        echo '</div><div class="box boxgallery">';
    }
}
// 循环结束后闭合最后一个box
if($count > 0) {
    echo '</div>';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:33:22