如何使用PHP确定文件年龄?

时间:2009-11-18 16:09:37

标签: php

使用PHP确定文件夹中图像的文件年龄的任何方法?

我想删除超过2小时的旧文件,这是否可以在上传到文件夹时不将时间戳名称添加到文件名中?

如果是的话,请举个例子!

感谢

8 个答案:

答案 0 :(得分:123)

if (time()-filemtime($filename) > 2 * 3600) {
  // file older than 2 hours
} else {
  // file younger than 2 hours
}

答案 1 :(得分:22)

您可以使用filemtime函数获取上次修改的日期/时间,并使用它来查看文件的年龄。

答案 2 :(得分:13)

您正在寻找filemtime功能

<?php
// outputs e.g.  somefile.txt was last modified: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>

答案 3 :(得分:4)

请注意,在NAS / SAN存储上,最新文件的文件时间可能与PHP时间()不同,因为这些存储可能有自己的时钟。我认为这样的配置是速率的,但它让我头疼。

答案 4 :(得分:3)

我在网上挖掘了一下Stackoverflow(PHP How to find the time elapsed since a date time?),这是我的解决方案:

这是一个完整的答案,提供文件年龄的人类可读表示+检查文件是否是2小时。

<?php

function humanTiming ($time)
{
    // to get the time since that moment
    $time = time() - $time;

    // time unit constants
    $timeUnits = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
    );

    // iterate over time contants to build a human 
    $humanTiming;
    foreach ($timeUnits as $unit => $text)
    {
        if ($time < $unit)
            continue;
        $numberOfUnits = floor($time / $unit);

        // human readable token for current time unit
        $humanTiming = $humanTiming.' '.$numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');

        // compute remaining time for next loop iteration
        $time -= $unit*$numberOfUnits;
    }
    return $humanTiming;
}


$filename = '/path/to/your/file.extension';

if (file_exists($filename))
{
    echo 'Now = '.date ("Y-m-d H:i:s.", time());
    echo "<br/>$filename was last modified on " . date ("Y-m-d H:i:s.", filemtime($filename));
    $time = strtotime('2010-04-28 17:25:43');
    $time = filemtime($filename);
    echo '<br/>File age is '.humanTiming($time).'.';

    $fileAge = time()-filemtime($filename);

    echo '<br/>Is file older than 2 hours? '.(($fileAge < (2*3600))?'No':'Yes').'.';
}
?>

这是我身边的输出:

Now = 2013-01-29 09:10:12.
/path/to/your/file.extension was last modified on 2013-01-29 08:07:52.
File age is 1 hour 2 minutes 20 seconds.
Is file older than 2 hours? No.

答案 5 :(得分:1)

尝试使用filemtime()

  

此函数返回写入文件数据块的时间,即文件内容更改的时间。

int filemtime ( string $filename )
     
      
  • filename:文件的路径。
  •   
// outputs e.g.  somefile.txt was last modified: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

答案 6 :(得分:1)

您可以使用上次修改文件的日期/时间:

答案 7 :(得分:1)

我会查看filemtime()filectime()个功能。这些将为您提供文件的修改和创建时间。