文件创建时间

时间:2010-01-18 09:29:25

标签: php file time sorting

如何通过文件创建对目录进行排序,最先在PHP 5.2中进行排序?

我在Windows 2000上。

3 个答案:

答案 0 :(得分:9)

在Windows上,CTime是创建时间,请使用以下内容:

<?php
$files = array();

foreach (new DirectoryIterator('/path') as $fileInfo) {    
    $files[$fileInfo->getFileName()] = $fileInfo->getCTime();
}

arsort($files);

此$文件将包含一个文件名数组作为键,ctime作为值。由于可能存在相同的ctimes,我选择了这种向后表示,这会导致$ files中的条目被覆盖。

编辑:

更新了使用CTime的答案,因为OP澄清了他正在使用Windows。

答案 1 :(得分:6)

你不能在Unix系统上创建日期,但是对于更改日期,但是请参阅下面的Windows编辑。

代码如下:

function sortByChangeTime($file1, $file2)
{
    return (filectime($file1) < filectime($file2)); 
}
$files = glob('*');                // get all files in folder
usort($files, 'sortByChangeTime'); // sort by callback
var_dump($files);                  // dump sorted file list

来自filectime上的PHP手册的注释:

  

注意:还要注意在某些Unix中   文本引用文件的ctime   作为时间的创造时间   文件。这是错的。没有   大多数Unix文件的创建时间   Unix文件系统。

请参阅link in Antti's answers了解ctime,atime和mtime的差异,并决定使用最适合在Unix上使用的Usecase。

编辑该文件的页面上的一条评论指出,Windows上没有更改时间 filectime确实会返回创建时间即可。我不是Windows文件系统的专业人士,但使用上述内容可能是你最好的选择。或者,您可以查看COM API以获取ScriptingHost的句柄,并查看是否可以从那里获取创建时间。

答案 2 :(得分:5)

大多数操作系统上都不存在文件创建时间。