phpでdate()関数の置き換えで曜日を日本語出力する。

date()関数で日付表示している部分で日本語の曜日を出力する必要が出てきました。

そのため、簡単にフォーマット書式をそのままにdate()関数を置換するだけで、曜日を日本語出力する関数を作成。

ググってみたけど無かったので、作ったほうが早いかなと思って作りました。

date関数のフォーマットをサポートした日本語の曜日を出力する関数。結構、作っている人多そうなのにな。。。

date_ja仕様

phpマニュアルdate関数を見てください。同じ使い方です。違う点は

  • D書式で曜日を日~土の短縮形で表示する。
  • l書式で曜日を日曜日~土曜日の短縮形で表示する。
  • 数字(タイムスタンプ)以外が$timestampに渡された場合strtotimeでタイムスタンプへの変換を試みる。

です。

date_ja関数のソース

function date_ja($format='Y年n月j日(D) H:i',$time=0)
{
	$ret = '';
	if (!$time) {
		$time = time();
	}
	if (preg_match('/^\d+$/',$time)) {
		$time = $time;
	} else {
		$time = strtotime($time);
	}
	if (strlen($time) == 0) return $ret;

	if (preg_match('/[^\\\]D/', $format)) {
		$weekday_pat = array('/sun/i','/mon/i','/tue/i','/wed/i','/thu/i','/fri/i','/sat/i' );
		$weekday_ja = array( '日', '月', '火', '水', '木', '金', '土' );
	} else if (preg_match('/[^\\\]l/', $format)) {
		$weekday_pat = array('/sunday/i','/monday/i','/tuesday/i','/wednesday/i','/thursday/i','/friday/i','/saturday/i');
		$weekday_ja = array( '日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日' );
	}
	$ret = date($format, $time);
	if (isset($weekday_pat) && isset($weekday_ja)) {
		$ret = preg_replace($weekday_pat,$weekday_ja,$ret);
	}

	return $ret;
}

date_ja関数テストプログラム

ini_set('display_errors', 1);
error_reporting(E_ALL);

test($format='Y年n月j日(D) H:i',time());
test($format='Y年n月j日(D) H:i',0);
test($format='Y年n月j日(D) H:i',null);

test($format='Y年n月j日(D) H:i',date('Y-m-d', time()));
test($format='Y年n月j日(D) H:i',date('Y-m-d H:i', time()));
test($format='Y年n月j日(D) H:i',date('Y-m-d H:i:s', time()));
test($format='Y年n月j日(D) H:i',date('Y/m/d', time()));
test($format='Y年n月j日(D) H:i',date('Y/m/d H:i', time()));
test($format='Y年n月j日(D) H:i',date('Y/m/d H:i:s', time()));

test('Y年m月d日(D)','2011/4/17');
test('Y年m月d日(D)','2011/4/18');
test('Y年m月d日(D)','2011/4/19');
test('Y年m月d日(D)','2011/4/20');
test('Y年m月d日(D)','2011/4/21');
test('Y年m月d日(D)','2011/4/22');

test('Y年m月d日l','2011/4/17');
test('Y年m月d日l','2011/4/18');
test('Y年m月d日l','2011/4/19');
test('Y年m月d日l','2011/4/20');
test('Y年m月d日l','2011/4/21');
test('Y年m月d日l','2011/4/22');

test('Y年m月d日','2011/4/17');
test('Y年m月d日','2011/4/18');
test('Y年m月d日','2011/4/19');
test('Y年m月d日','2011/4/20');
test('Y年m月d日','2011/4/21');
test('Y年m月d日','2011/4/22');

test('Y年m月d日(\D)','2011/4/17');
test('Y年m月d日\l','2011/4/17');

function test($format='',$time=0)
{
	echo $time;
	echo " => ";
	if ($format) {
		echo date_ja($format,$time);
		echo " 書式:$format";
	} else {
		echo date_ja($format='Y年n月j日(D) H:i',$time);
	}
	echo "<br />\n";
}

date_ja関数テスト出力

1303272504 => 2011年4月20日(水) 13:08 書式:Y年n月j日(D) H:i
0 => 2011年4月20日(水) 13:08 書式:Y年n月j日(D) H:i
=> 2011年4月20日(水) 13:08 書式:Y年n月j日(D) H:i
2011-04-20 => 2011年4月20日(水) 00:00 書式:Y年n月j日(D) H:i
2011-04-20 13:08 => 2011年4月20日(水) 13:08 書式:Y年n月j日(D) H:i
2011-04-20 13:08:24 => 2011年4月20日(水) 13:08 書式:Y年n月j日(D) H:i
2011/04/20 => 2011年4月20日(水) 00:00 書式:Y年n月j日(D) H:i
2011/04/20 13:08 => 2011年4月20日(水) 13:08 書式:Y年n月j日(D) H:i
2011/04/20 13:08:24 => 2011年4月20日(水) 13:08 書式:Y年n月j日(D) H:i
2011/4/17 => 2011年04月17日(日) 書式:Y年m月d日(D)
2011/4/18 => 2011年04月18日(月) 書式:Y年m月d日(D)
2011/4/19 => 2011年04月19日(火) 書式:Y年m月d日(D)
2011/4/20 => 2011年04月20日(水) 書式:Y年m月d日(D)
2011/4/21 => 2011年04月21日(木) 書式:Y年m月d日(D)
2011/4/22 => 2011年04月22日(金) 書式:Y年m月d日(D)
2011/4/17 => 2011年04月17日日曜日 書式:Y年m月d日l
2011/4/18 => 2011年04月18日月曜日 書式:Y年m月d日l
2011/4/19 => 2011年04月19日火曜日 書式:Y年m月d日l
2011/4/20 => 2011年04月20日水曜日 書式:Y年m月d日l
2011/4/21 => 2011年04月21日木曜日 書式:Y年m月d日l
2011/4/22 => 2011年04月22日金曜日 書式:Y年m月d日l
2011/4/17 => 2011年04月17日 書式:Y年m月d日
2011/4/18 => 2011年04月18日 書式:Y年m月d日
2011/4/19 => 2011年04月19日 書式:Y年m月d日
2011/4/20 => 2011年04月20日 書式:Y年m月d日
2011/4/21 => 2011年04月21日 書式:Y年m月d日
2011/4/22 => 2011年04月22日 書式:Y年m月d日
2011/4/17 => 2011年04月17日(D) 書式:Y年m月d日(\D)
2011/4/17 => 2011年04月17日l 書式:Y年m月d日\l

最後に

最近、更新してないなと思って、簡単に更新できるネタをアップ(汗

ずっと、このサイト自体開いていなかったら、コメントいっぱい。。。コメント残してくれた人ごめんなさい。

ページトップ

ブックマーク!


コメント投稿

* は必須項目です。入力したメールアドレスは公開されません。

*
*



AccessやExcel、.NETソフトウェア開発、WordPress等を使用したWebのシステム化、PCサポート、コンサルなどを行っています。全国対応可能です。お問い合わせください。
TEL (0776)56-8539