文件名列表作为日期,按日期顺序排列?

时间:2013-03-11 12:43:21

标签: php jquery file date

我的服务器上有一堆文件,文件名从'april2009'到'march2013',中间每个月都有一个文件(加上从现在起每个月的新文件)。

我尝试使用'filemtime'按顺序排列,但这给出了一个随机顺序,因为它们似乎已被修改过了。

如何排序文件名并按顺序排列,从最近的第一个开始?

(使用php获取文件名,但可以使用jquery或混合用于此目的)

感谢

2 个答案:

答案 0 :(得分:1)

strtotime 令人惊讶用于日期转换。

检索完文件列表后,您可以执行以下操作:

$date = strtotime('april2003');

哪个会给你:1049155200。这意味着:

  

1/4/2003à2:00:00

获得时间戳后,您可以按照自己的意愿进行排序。

这是一个POC:

$dirs = array();
if ($handle = opendir('/path/to/dir')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != ".." && is_dir($entry)) {
            $dirs[strtotime(substr($entry, 0, -5))] = $entry;
        }
    }
    closedir($handle);
}

krsort($dirs);

答案 1 :(得分:0)

说得客气一点,在提出namning文件约定之前应该考虑这个问题。正如评论中所指出的,唯一明智的命名惯例是可分类的yyyy-mm或yyyy-mm-dd。

在这种情况下,您唯一的选择是:

  1. 加载文件名列表
  2. 加载它们时,将名称转换为可排序的形式(因此您可以将april2003转换为200304)
  3. 当你加载它们时,将它们放在$ img [$ sortablefilename] = $ real file name形式的数组中(例如$ img ['200304'] ='april2003';)
  4. 使用kso​​rt对生成的数组进行排序
  5. 使用真实文件名读取已排序的数组以显示图像