2005年3月21日 () 春分の日の振替休日

日本の日付プラグイン

MTで日本の日付関係の表示を行うためのプラグインを作ってみました。

旧暦での月日や六曜、二十四節気、祝日が表示できます。

早速ゑBLOGのトップにあるカレンダーに組み込んで祝日を赤く表示するようにしてみました。マウスを祝日のところに持って行くと何という祝日かが表示されます(これはブラウザにもよりますが)。

また、各記事のところの日付表示にも祝日を表示させるようにしてあります。今日は振り替え休日なのでそのように表示されているはずです。

インストールするにはプラグインのファイルをpluginsディレクトリにコピーします。あとはテンプレートを書き換えて<$MTなんとかDate format="..."$>となっているところを<$MTJDate format="..."$>と置き換えるだけです。

formatに指定できるのは以下のとおりです。

標準のMT…Dateと同じフォーマット

%a曜日(英語、略記)%A曜日(英語)%b月名(英語、略記)%B月名(英語)%d日(数字2桁, 0詰め)%e日(数字2桁, 空白詰め)%m月(数字2桁)%x標準の日付%y西暦(下2桁)%Y西暦(4桁)

追加したフォーマット

%G元号(明治から平成)%Eその年の十干十二支%n月(数字, 詰め無し)%N月名(日本語)%K旧暦月名%D日(数字, 詰め無し)%J日(漢数字)%L旧暦 日(漢数字)%C曜日(英語、祝日の時はHolidayを返す)%i曜日(日本語)%f曜日(日本語、略記)%h祝日%r六曜%s二十四節気

特殊タグ

その他に祝日の名前を出力するためのタグや、その日が祝日かどうかなどで場合分けできるようなタグを用意しました。

<$MTHoliday$>その日が祝日であればその祝日の名前を出力します。<MTIfHoliday>祝日かどうかを判定します。<MTIfSunday>日曜日かどうかを判定します。<MTIfMonday>月曜日かどうかを判定します。<MTIfTuesday>火曜日かどうかを判定します。<MTIfWednesday>水曜日かどうかを判定します。<MTIfThursday>木曜日かどうかを判定します。<MTIfFriday>金曜日かどうかを判定します。<MTIfSaturday>土曜日かどうかを判定します。<$MTRokuyou$>その日の六曜を出力します。<MTIfTaian>大安かどうかを判定します。<MTIfShakko>赤口かどうかを判定します。<MTIfSensho>先勝かどうかを判定します。<MTIfTomobiki>友引かどうかを判定します。<MTIfSenpu>先負かどうかを判定します。<MTIfButsumetsu>仏滅かどうかを判定します。<$MT24Sekki$>その日が二十四節気であればその二十四節気の名前を出力します。<MTIf24Sekki>二十四節気かどうかを判定します。

サンプル

ゑBLOGのカレンダーは以下のようにテンプレートに書いています。

<table border="0" cellspacing="4" cellpadding="0" summary="投稿した日にリンクする月別のカレンダー" width="100%"> <caption style="text-align:center" class="calendarhead"><$MTJDate format="%Y年 %n月"$></caption> <tr> <th abbr="日曜日" align="center"><span class="calendar"><span class="Sunday">日</span></span></th> <th abbr="月曜日" align="center"><span class="calendar"><span class="Monday">月</span></span></th> <th abbr="火曜日" align="center"><span class="calendar"><span class="Tuesday">火</span></span></th> <th abbr="水曜日" align="center"><span class="calendar"><span class="Wednesday">水</span></span></th> <th abbr="木曜日" align="center"><span class="calendar"><span class="Thursday">木</span></span></th> <th abbr="金曜日" align="center"><span class="calendar"><span class="Friday">金</span></span></th> <th abbr="土曜日" align="center"><span class="calendar"><span class="Saturday">土</span></span></th> </tr> <MTCalendar> <MTCalendarWeekHeader><tr></MTCalendarWeekHeader> <td align="center"<MTIfHoliday> title="<$MTHoliday$>"</MTIfHoliday>><span class="calendar"><span class="<$MTJDate format="%C" $>"> <MTCalendarIfEntries><MTEntries lastn="1"><a href="<$MTEntryPermalink$>" mce_href="<$MTEntryPermalink$>"><$MTCalendarDay$></a></MTEntries></MTCalendarIfEntries><MTCalendarIfNoEntries><$MTCalendarDay$></MTCalendarIfNoEntries><MTCalendarIfBlank>&nbsp;</MTCalendarIfBlank></span></span></td><MTCalendarWeekFooter></tr></MTCalendarWeekFooter></MTCalendar> </table>

また、各記事の日付は以下のように書いています。

<$MTJDate decode_html="1" format="%x (&lt;span class=&quot;%C&quot;&gt;%f&lt;/span&gt;)"$> <MTIfHoliday> <span class="Holiday"><$MTHoliday$></span></MTIfHoliday>

decode_htmlとしているのはformatで指定した文字列がちゃんとタグに変換されるようにするためです。

その他面白い記述方法があれば教えてください。

注意

六曜が表示できるようになっていますが、人権侵害とか色々とやかく言われることが多いこの世の中ですので特に自治体でのご利用はやめておいた方がいいかもしれません。

謝辞

旧暦への変換などの計算は旧暦計算ライブラリをほとんどそのまま使わせていただきました。 ありがとうございます。

実は祝日の計算方法などもどこかのページで公開されているスクリプトを参考にしたはずなのですが、持ってきたのがかなり昔なもので、どこから取ってきたのか分からなくなってしまいました。ソースを見てお心当たりのある方はご連絡ください。

法改正

2007年に施行された国民の祝日に関する法律への改正により祝日名や振替休日が変更されています。この法改正には次のバージョンで対応してあります.

また、今後も法改正により実際の祝日名や振替休日などと異なる可能性があります。できるだけ追随させるつもりではいますが、追随が間に合わないこともあります。あしからずご了承ください。

 

投稿者 双六 : 2005年03月21日 23:22 | このエントリーのトラックバックURL
※ゑBLOGではこのブログへのリンクを含まないトラックバックを拒否しています。また、そのチェックのためトラックバックの送信中にタイムアウトを起こす可能性があります。トラックバックの送信に失敗したように見えても、しばらく待つと送信に成功していることがありますので、リロードするなどして確かめていただきますようお願いします。
トラックバック
日本の日付プラグイン from http://www.kyo-kan.net/archives/2005/03/post_275.html
日本の日付プラグインを使ってちょっと遊んでみました。これからどうするかはわからないけど。 ちなみにWikipediaの“今日は何の日”への自動リンクはこんな感じ...
日本的日付表記採用 from http://noppoland.com/blog/archives/2005/05/post_121.html
実は、日付の表記方法には結構こだわりがあるのです。 「必ず曜日を入れたい」とか、...
日本的日付表記採用 from http://noppoland.com/blog/archives/2005/05/post_120.html
実は、日付の表記方法には結構こだわりがあるのです。 「必ず曜日を入れたい」とか、...
コメント

こちらのプラグイン、使わせていただきました。
それでちょっと気になったことが。

Movable Type 3.151のcronによる予約投稿を使っているのですが、特に予約投稿する記事がなくても、cronが走ったときに、

"my" variable $uruu masks earlier declaration in same scope at plugins/mt-jdate.pl line 290.
"my" variable $q_mon masks earlier declaration in same scope at plugins/mt-jdate.pl line 290.
"my" variable $q_day masks earlier declaration in same scope at plugins/mt-jdate.pl line 290.

という通知のメールが届く状態になっております。MTJDateを組み込んでビルドしてみても何も異常はなかったのですが。

投稿者 都々目さとし : 2005年03月22日 17:36

ビルドで出なくてcronで出るのが何でかちょっとよくわかりませんが、
行番号の箇所を見ると確かにエラーというか警告がでるような書き方になってました。

修正したものをアップし直しましたので、取り直して試していただけるとありがたいです。

投稿者 ゑ : 2005年03月22日 17:46

エラー、消えたようです。どうもありがとうございました。

投稿者 都々目さとし : 2005年03月22日 23:46

はじめまして。
本日の日付プラグインについてお聞きしたいことがあって書き込ませていただきました。
このプラグインを見つける前にnさんという方が公開されている、JCarenderColorというプラグインで休日の色を変更していましたが、本日の日付プラグインを見つけたので入れ替えようと思い、JCarenderColorプラグインをpluginフォルダに入れたまま本日の日付プラグインをテストしてみたところ、和暦や休日の色や休日名が設定通りに表示されました。
ところが、JCalenderColorを外してサイトを再構築したところ、本日の日付プラグインのタグが反映されなくなってしまい、再度JCarenderColorを入れて再構築をするとタグが有効になりました。
サイト内ではJCarenderColor関係のタグは全く使っていないので、どういう理由でこのような現象が起きるのか全くわかりません。
ちなみに、現在使用しているのは、MovableType3.151jaで、インストールしているプラグインはJCalendarColor 2.0、MT-JDate、MTWeatherJP、 0.03MT-PhotoGallery, v1.1.0.2です。
ほかにこのような現象が起きてる方はいらっしゃらないと思うので、大変お手数とは思いますが、何かご指導していただけることがあればお願いしたいと思い書き込ませていただきました。

投稿者 ひで : 2005年05月11日 11:17

申し訳ありませんが、これだけの情報ではこちらからは何も言えません。
せめて使用したテンプレートを見せていただければ何か分かるかも知れませんが…。

投稿者 ゑ : 2005年05月15日 00:42

初めまして。プラグイン、使わせていただきました!
前々から元号を使ってブログを更新したいと思っておりましたので、まさに求めていたものに出会った心地です。本当にありがとうございました。

それでは、お礼のみですが失礼いたします。

投稿者 志摩 : 2007年08月14日 17:57

はじめまして。
MT5に対応していただけないでしょうか。

投稿者 Clara : 2011年08月15日 05:32
コメントする









名前、アドレスを登録しますか?