日付を表示する際に、現在時刻との差を"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ヶ月 |