日付を表示する際に、現在時刻との差を"30分前"や"1年3ヶ月前"のように表示するための小さな関数です。
<?php
function TimeDivision ($t, $mode = "normal")
{
$unitSecond = '秒';
$unitMinute = '分';
$unitHour = '時間';
$unitDay = '日';
$unitMonth = 'ヶ月';
$unitYear = '年';
$divTime = $t - time ();
if ($divTime < 60)
return sprintf ('%d%s', $divTime, $unitSecond); // 秒
$divTime /= 60;
if ($divTime < 60)
return sprintf ('%d%s', $divTime, $unitMinute); // 分
$divTime /= 60;
if ($divTime < 24)
return sprintf ('%d%s', $divTime, $unitHour); // 時間
$divTime /= 24;
if ($divTime < 30 || $mode == "days")
return sprintf ('%d%s', $divTime, $unitDay); // 日
$divTime2 = $divTime % 30; $divTime /= 30;
if ($divTime < 12)
if (0 < $divTime2 && $mode == "complex")
return sprintf ('%d%s%d%s', $divTime, $unitMonth, $divTime2, $unitDay); // 月+日
else
return sprintf ('%d%s', $divTime, $unitMonth); // 月
$divTime2 = $divTime % 12; $divTime /= 12;
if (0 < $divTime2 && $mode == "complex")
return sprintf ('%d%s%d%s', $divTime, $unitYear, $divTime2, $unitMonth); // 年+月
return sprintf ('%d%s', $divTime, $unitYear); // 年
}
echo TimeDivision (strtotime ("+40 day")), "
";
echo TimeDivision (strtotime ("+40 day"), "days"), "
";
echo TimeDivision (strtotime ("+40 day"), "complex"), "
";
?>
| mode | ||
|---|---|---|
| [normal] | complex | days |
| 1 〜 59秒 | ||
| 1 〜 59分 | ||
| 1 〜 23時間 | ||
| 1 〜 29日 | 1 〜 d日 | |
| 1 〜 12ヶ月 | 1 〜 mヶ月d日 | |
| 1 〜 y年 | 1 〜 y年mヶ月 | |