[PHP] 日付表示のための小さな関数

Posted by
ぴろり
Posted at
2006/10/29 17:15
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
開発メモ カテゴリ

 日付を表示する際に、現在時刻との差を"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]complexdays
1 〜 59秒
1 〜 59分
1 〜 23時間
1 〜 29日 1 〜 d日
1 〜 12ヶ月 1 〜 mヶ月d日
1 〜 y年 1 〜 y年mヶ月

このエントリーをはてなブックマークに追加  



関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事にトラックバックを送るには?

コメントを投稿する

 
 (必須, 匿名可, 公開, トリップが使えます)
 (必須, 匿名可, 非公開, Gravatar に対応しています)
 (必須)
スパム コメント防止のため「投稿確認」欄に ランダムな数字 CAPTCHAについて を入力してから送信してください。お手数ですがご協力のほど宜しくお願いいたします。