Php 文件创建时间

Php 文件创建时间,php,file,time,sorting,Php,File,Time,Sorting,如何通过文件创建对目录进行排序,这是PHP5.2中最新的第一个 我使用的是Windows 2000。大多数操作系统上都不存在文件创建时间。您不能在Unix系统上指定创建日期,但更改日期,请参见下面的Windows编辑 代码如下: function sortByChangeTime($file1, $file2) { return (filectime($file1) < filectime($file2)); } $files = glob('*');

如何通过文件创建对目录进行排序,这是PHP5.2中最新的第一个


我使用的是Windows 2000。

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

您不能在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
函数sortByChangeTime($file1,$file2)
{
返回(filectime($file1)
从PHP手册上的注释中:

注意:还要注意,在某些Unix中 引用文件的ctime的文本 作为一个创世的时间 文件这是错误的。没有 大多数情况下Unix文件的创建时间 Unix文件系统

请参阅以了解ctime、atime和mtime之间的差异,并根据您的用例确定在Unix上最适合的用例


编辑:filectime页面上的一条评论指出,Windows上没有更改时间filectime确实返回创建时间。我对Windows文件系统不在行,但使用上面的方法可能是最好的选择。或者,您可以查看COM API以获取ScriptingHost的句柄,并查看是否可以从中获取创建时间。

在windows上,CTime是创建时间,请使用以下命令:

<?php
$files = array();

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

arsort($files);

这是修改时间,不是创建时间。你读了我的第一行吗?大多数文件系统不跟踪创建时间。不,这不起作用。rsort将丢失文件名。@stcony0:我更新了答案以使用windows。请注意,它不能与*nix.+1一起使用Spl-尽管迭代器也不知道有这么快;)不带窗户。