将日期与PHP中文件名中的日期字符串进行比较

时间:2015-06-07 18:46:47

标签: php

我正在尝试遍历pdf文件名的反向glob,并找到在输入日期之前创建的pdf。 (我已经成功检查了文件名的blob,其中一个等于输入的日期。)

我有以下代码,我认为应该可以使用,但不是。

我假设日期/字符串转换是问题,但我在Windows上运行php并且我的调试工具是有限的。

以下代码中有人能看到我做错了吗?

$d = "2007-07-11"
$firstdate = substr(array_slice(glob('*.pdf'), 0, 1), 0, 10);
echo "<br />" . $firstdate[0];

$counter = 0;
$date_to_check = strtotime(substr($d, 0, 10));
while ($counter < 1){
    foreach(array_reverse(glob("*.pdf")) as $filename) {
        if ((strtotime(substr($filename, 0, 10)) < $date_to_check) || ((substr($filename, 0 ,10) == $firstdate[0]))) {
            $file_to_get = $filename;
            $file_found = 1;
            $counter = $counter + 1;
        } else {
            $date_to_check->modify('-1 day');
        }
    }
}

文件名类似于2007-07-11-wnr.pdf,2009-12-23-wnr.pdf和2013-04-02-wnr.pdf。

1 个答案:

答案 0 :(得分:1)

正如约翰康德指出我的日期修改是错误的。

这是有效的代码。

$counter = 0;
$date_to_check = strtotime(substr($d, 0, 10));
while ($counter < 1){
    foreach(array_reverse(glob("*.pdf")) as $filename) {
        if ((strtotime(substr($filename, 0, 10)) < $date_to_check) || ((substr($filename, 0 ,10) == $firstdate[0]))) {
            $file_to_get = $filename;
            $file_found = 1;
            $counter = $counter + 1;
        } else {
            $date_to_check = strtotime ( '+2 days' , strtotime ( $date_to_check ) ) ;
        }
    }
}

谢谢约翰!