不知道为什么,但我无法获得PHP函数来显示某个文件已提交的时间。前;大约1年前或大约2秒前。但是在我的情况下,即使文件已在几秒钟前提交,它仍然会在“大约1天前”停留。
以下是自提交以来应该有时间的功能
function time_since($since) {
$chunks = array(
array(60 * 60 * 24 * 365 , 'year'),
array(60 * 60 * 24 * 30 , 'month'),
array(60 * 60 * 24 * 7, 'week'),
array(60 * 60 * 24 , 'day'),
array(60 * 60 , 'hour'),
array(60 , 'minute'),
array(1 , 'second')
);
for ($i = 0, $j = count($chunks); $i < $j; $i++) {
$seconds = $chunks[$i][0];
$name = $chunks[$i][1];
if (($count = floor($since / $seconds)) != 0) {
break;
}
}
$print = ($count == 1) ? '1 '.$name : "$count {$name}s";
return $print;
}
以下是使用上述函数并将所有信息注入JSON
的代码$dh = opendir($dir);
$files = array();
while (($file = readdir($dh)) !== false) {
if ($file != '.' AND $file != '..' ) {
if (filetype($dir . $file) == 'file') {
$files[] = array(
'id' => $domain.$dir.$file."?".Salt($file),
'name' => $file,
'size' => filesize($dir . $file). ' bytes',
'date' => time_since(date("ymd Hi", filemtime($dir . $file))),
'path' => $domain.$dir.$file,
'thumb' => $domain.$dir."thumbnails/".$file
#'thumb' => $dir . 'thumbs/' . $file
);
}
}
}
closedir($dh);
$json = json_encode($files);
$callback = $_GET['callback'];
echo $callback.'('. $json . ')';
答案 0 :(得分:3)
您是否尝试过为您的函数传递时间戳而不是字符串:
'date' => time_since(time() - filemtime($dir . $file)),
答案 1 :(得分:1)
在进行计算之前,您应该将日期转换为unix时间戳。
'date' => time_since(date("ymd Hi", filemtime($dir . $file))),
应该是:
'date' => time_since(strtotime(date("Y-m-d H:i:00", filemtime($dir . $file)))),
更新
@Arthur Halma给出了正确的答案:filemtime返回时间戳!
'date' => time_since(time() - filemtime($dir . $file)),
应该工作。