Найти файлы в папках и подпапках, которые были созданы на текущую дату

Я пытаюсь найти файлы, которые были созданы сегодня. Я нашел большую часть своего ответа в других постах, но не совсем понял его правильно. Приведенный ниже код повторяет все файлы, а не только те, которые были созданы сегодня. Какие-либо предложения? Благодарю.

$di = new RecursiveDirectoryIterator('/documents/listings');
foreach (new RecursiveIteratorIterator($di) as $filename => $file) 
{

    if (date ("m-d-Y", filemtime($file)) == date("m-d-Y")) 

    { echo $filename . '<br/>'; }

}

3 ответа

Решение

Прежде всего, о функции filemtime возвращает: время модификации файла.
Но также существует функция filectime, она возвращает: inode change time of file.
Как я нашел filectime лучше для вашего вопроса, но он действительно возвращает файлы не только созданные сегодня, но и отредактированные сегодня.

Мой код:

<?php

$path = dirname(__FILE__);

$objects = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path),
    RecursiveIteratorIterator::SELF_FIRST
);
foreach ($objects as $file => $object) {
    $basename = basename($file);
    if ($basename == '.' or $basename == '..') {
        continue;
    }
    if (is_dir($file)) {
        continue;
    }
    if (date('Y-m-d') === date('Y-m-d', filectime($file))) {
        echo $file . PHP_EOL;
    }
}

Твой код работает на меня. пожалуйста, проверьте дату создания файла один раз. Или попробуйте изменить каталог, который вы создали в прошлом.

if (!is_dir($file) && date ("m-d-Y", filemtime($file)) == date("m-d-Y")) 

Может быть, вы хотите, чтобы отображать файлы без каталогов? Попробуйте это для условия.

Другие вопросы по тегам