【问题标题】:PHP get files in directory and list if they are within the last year (filetime)PHP获取目录中的文件并列出它们是否在去年(文件时间)
【发布时间】:2022-10-25 21:50:55
【问题描述】:

只有在去年创建文件时,我才需要输出目录的内容。

<?php
    $dirpath = "Dir/foo/bar/";
    $files = array();
    $files = glob($dirpath . "*");
    rsort($files);
    $today = date("Y-m-d");
    $lastYear = date("Y-m-d", strtotime("-1 years"));
    $todayTimeStamp = strtotime($today);
    $beginningTimeTtamp = strtotime($lastYear);
    foreach($files as $item) {
        if(filetime($item)  > $beginningTimeStamp && < $todayTimeStamp) {
            echo "basename($item)";
         }
     }

这不会返回任何内容 - 我只想返回大于从今天开始的一年日期且小于今天的 $item(没有必要?)。

我是否错误地将 $beginningTimeStamp 和 $todayTimeStamp 转换为时间戳以比较文件时间?我无法将每个 $item 转换为其文件时间......有没有更好的方法来做到这一点?

【问题讨论】:

  • 你为什么改变接受的答案?我发现了所有的错误,我是第一个:)
  • 对不起...不知道这是一件大事。我最终使用了另一个答案,因为它比我所拥有的更简洁
  • 不是一件大事,只是让我感到沮丧。不过不用担心。

标签: php


【解决方案1】:

几个问题。您想使用时间戳。没有理由创建时间戳、格式化它们然后将它们转换回时间戳。此外,if 中有错误。这将起作用:

foreach($files as $item) {
    $mt = filemtime($item)
    if($mt > strtotime('-1 year') && $mt < time()) {
        echo "basename($item)";
     }
 }

但是,除非将来某些事情可能会出现奇怪的时间,否则您只需要:

foreach($files as $item) {
    if(filemtime($item) > strtotime('-1 year') {
        echo "basename($item)";
     }
 }

【讨论】:

  • 文件时间不正确-> 文件时间正确:php.net/manual/en/function.filemtime.php
  • @ValeriuCiuca 编辑谢谢。想知道为什么他们没有得到未定义函数?
  • 当我测试他的代码时,我得到了未定义的函数。
【解决方案2】:

您的代码有一些拼写错误,例如 filetime 而不是 filemtime 等。我更正了它:

$dirpath = "Dir/foo/bar/";
$files = [];
$files = glob($dirpath . "*");
rsort($files);
$today = date("Y-m-d");
$lastYear = date("Y-m-d", strtotime("-1 years"));
$todayTimeStamp = strtotime($today);
$beginningTimeStamp = strtotime($lastYear);
foreach ($files as $item) {
    print "<br>" . filemtime($item) . '<hr>';
    if (filemtime($item) > $beginningTimeStamp && filemtime($item) < $todayTimeStamp) {
        echo "basename($item)";
    }
}

我还更正了 if 语句,并且 $beginningTimeTtamp 有一个错字-> $beginningTimeStamp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多