以下のコードでうまくいくでしょうか。
<?php
function dhhmmss($t) {
$d = (int)($t / (24 * 60 * 60));
$h = (int)(($t - $d * 24 * 60 * 60) / (60 * 60));
$m = (int)(($t - $d * 24 * 60 * 60 - $h * 60 * 60) / 60);
$s = (int)(($t - $d * 24 * 60 * 60 - $h * 60 * 60) - $m * 60);
return sprintf('%04d-%02d:%02d:%02d', $d, $h, $m, $s);
}
function dirmtime($path, $level=3)
{
$mtime = filemtime($path);
if (0 < $level--) {
foreach (glob($path."/*") as $file) {
if (is_dir($file)) {
$subtime = dirmtime($file, $level);
if ($mtime < $subtime) {
$mtime = $subtime;
// echo $level.' '.$file.' '.date(DATE_RFC822, $mtime)."<br>";
} } } }
return $mtime;
}
function difmtime($path, $level=3) {
$now = time();
$mtime = filemtime($path);
$dtime = $now - $mtime;
if (0 < $level--) {
foreach (glob($path . "/*") as $file) {
if (is_dir($file)) {
$subtime = dirmtime($file, $level);
if ($dtime > $subtime) {
$dtime = $subtime;
// printf("(%02d) %s %s<br />\n", $level, dhhmmss($dtime), $file);
}
}
}
}
return $dtime;
}
$dtime = difmtime("P");
echo '最後にアップロードしてから ' . dhhmmss($dtime)分です;
?>
PにはAを書くのでしょうか、それともA1?
最後の echo の部分が間違っています。
(誤)echo '最後にアップロードしてから ' . dhhmmss($dtime)分です;
↓
(正)echo '最後にアップロードしてから ' . dhhmmss($dtime) . '分です';
PにはAを書きます。
コメント(2件)
表示についてですが、次の部分(※「dhhmmss($t)」関数の処理です。)
return sprintf('%04d-%02d:%02d:%02d', $d, $h, $m, $s);
上記を以下のように変更してはいかがでしょうか?
return sprintf('%d日と%d時間%d分%d秒', $d, $h, $m, $s);
「dhhmmss($dtime)」が「0日と0時間27分3秒」のように表示されます。
※あるいは、上記の「return sprintf('% ~);」という1行を以下のように変更すれば、余分な表示が減ってさらにすっきり表示できると思います。
-------------------- ここから ---------------------
if($d>0){
return sprintf('%d日と%d時間%d分%d秒', $d, $h, $m, $s);
}elseif($h>0){
return sprintf('%d時間%d分%d秒', $h, $m, $s);
}elseif($m>0){
return sprintf('%d分%d秒', $m, $s);
}else{
return sprintf('%d秒', $s);
}
------------------- ここまで --------------------
ブラウザへの出力は、以下のようにしてみてください。
echo '最後にアップロードしてから ' . dhhmmss($dtime). "経過しました。<br>";
あるいは、
echo '最後にアップロードしたのは ' . dhhmmss($dtime). "前です。<br>";
※類似質問を複数投稿されているようですが、同じ質問内で疑問な箇所を返信して1日くらい待てば、回答者さんからフォローがあるかもしれません。
あるじゃないか。それも2回も。まるで他人事のようにシレッと答えてポイント稼ぎしようと企ててるじゃないか。
誠意ある人なら最初につけた自分の回答のほうに訂正入れるだろ。
この質問者には「落とし穴をいくつか開けたコード」を書いて何度か質問させ、ポイントを多重に稼ぐなど考えも及ばんのだろうな。最近、こんな質問者が多いが、質問者ももう少し賢くならんと馬鹿にされ続けるだけじゃ。