« HLPVIEW: プチコンmkII用の簡易アドヴェンチャーゲーム用ルーチン | トップページ | hide_img.js:画像のクラス指定に順って閲覧を要クリック化する »

2014年2月 8日 (土)

gengou.js:日付を後付けで元号表示にする

ブログ記事の上の日付とかを西暦から元号に変えるための JavaScript。最初の紹介はいちおう [cocolog:78797141] になるが、ほぼ説明してない。このサイトで使ってるので、どういう感じになるかは PC でこのサイトを見てればわかるはず。使い方は、次をページ(ブログテンプレートとか)で JavaScript をロードしてる部分に足すだけ。

<script type="text/javascript" src="http://jrf.cocolog-nifty.com/archive/lib/gengou.js"></script>
<script type="text/javascript">
<!--
add_event_listener_rewrite_gengou("//div[@class='content']/h2");
add_event_listener_rewrite_gengou("//div[@class='sticky-entry']/h2");
-->
</script>


どの日付を換えるかは、上の add_event_listener_rewrite_gengou の引数の XPath で指定してるので、そこを変えればほぼどんなサイトでも使えるはず。

もちろん、gengou.js はダウンロードして自分のサイトに置いて使ったほうがいい。そのときは、内部で古いブラウザ用にここから取ってきた XPath のライブラリを使ってるので、それもいっしょに置いて、ソースの GENGOU_XPATH_JS で指定すること。(どうせならと、XPath 2.0とかを選ぶ人もいるかもしれないけど。)

ただ、このスクリプト、元号は直近の記事分は変わらないようになってて、「その日以降元号にする」という部分は、ソース直書きになる。そこはソース中の↓の "2014-02-12" を最新の日付に更新しさえすればいい。私は(生きてれば)だいたい3ヶ月ごとに更新していくはず。三つ組の最後の部分は終了日で、ネット時代になってからずっと平成なので null のまま、ソースには「ももくり三年」にちなんだ例が載ってて、"平成%(数)G年%(和)m%(数)d日" と指定して「平成二十六年如月十一日」と漢数字化するような例も載ってる。

var Gengou = [
  [null, "2014-02-12", null], 
  ["平成%G年(%Y年) %_m月%_d日", "1989-01-08", null]
];


一番上でリンクしたひとことでも書いたんだけど、私が死んだあと誰かがここを引き継ぐと、デフォルトでは元号の表示が切れるわけで、そこは少し失礼にあたる。ずっと同じ元号のほうが失礼が薄いという考え方もあるのは知ってるが、私の後継者が万一現れたとき、よくわからないまま、この先のすごい高齢化社会において「新しく若い元号」を認めないような形になるのをむしろ避けたかった。

そういうことだから、このスクリプトを自分のとこにおけないと、私の更新が止まれば元号表示が止まっちゃう。こういうスクリプトの提供は政府がやってくれたら便利なんだけどね…。政府だと責任とか小回りの点で難しかったら、神社の団体とか、特定のデカい神社とかがやってくれたらありがたいのに。(いちおう、最新の JavaScript には Intl.DateTimeFormat とかいう機能があるらしいけど…。)

「素人」が自分のサイトで使うために作っただけなので、コード品質は「良い」とは言えないと思う。ただ、その程度なのでパブリックドメインが著者たる私の意志。商用だろうが改造しようが、お好きに使っていただいても私は文句言いません。
更新: 2014-02-08,2014-02-11
初公開: 2014年02月08日 00:37:43
最新版: 2014年02月11日 23:38:13

2014-02-08 00:37:41 (JST) in JavaScript, JRF 作成ソフトウェア | | コメント (2) | トラックバック (0)

JavaScript」カテゴリ内の最近の記事

JRF 作成ソフトウェア」カテゴリ内の最近の記事

批評や挨拶のためのネットコミュニティ

  • はてなブックマーク(って何?) このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク
  • Twitter (って何?)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/93568/59089520

トラックバックのポリシー

他サイトなどからこの記事に自薦された関連記事(トラックバック)はまだありません。
» JRF のソフトウェア Tips:gengou.js:日付を後付けで元号表示にする (この記事)

コメント

despair 更新:記事を書いたあと確認すると、IE でなぜか元号表示になってない!前はうまく行ってたのに…。

調べると、xpath のモジュールを「インクルード」するときに、document.body ができてなかったため、ちょっとダーティだが、そのときは HEAD の部分で include するようにした。(しかも、IE6 だと document.head じゃダメで、document.getElementsByTagName('head')[0] にしないとダメ。Thanks→《javascript - document.head.appendChild or document.createElement not working in IE - Stack Overflow》。)

いろいろやってて、Time-Stamp は名前と合ってないけど、前の分は gengou-20140129.js に、今回の分は gengou-20140208.js にアーカイブしておいた。

投稿: JRF | 2014-02-08 02:12:12 (JST)

basketball 更新:gengou-20140211.js。バージョン 0.03。

POSIX や GNU の strftime とか date コマンドとかで使えるフォーマットで書くように改めた。もちろん全部が使えるわけではなくサブセット…下位互換にしたということ。ただし、和暦年数指定の "%G" だけは、それらと違う意味になっている。

内部的にはかなり大きな変更で、またまた IE6 のオブジェクトのプロパティリストがらみのシンタックスエラーに悩んでいた。一番最後のカンマの問題ではなく、最後、「ケツカンマ」を避けるために { null: null } みたいにしたところ、最初の null がプロパティとして指定してはいけないたぐいのものらしくエラーになっていた。

投稿: JRF | 2014-02-11 23:25:42 (JST)

コメントを書く



(メールアドレス形式)


※匿名投稿を許可しています。ゆるめのコメント管理のポリシーを持っています。この記事にまったく関係のないコメントはこのリンク先で受け付けています。
※暗号化パスワードを設定すれば、後に「削除」、すなわち JavaScript で非表示に設定できます。暗号解読者を気にしないならメールアドレスでもかまいません。この設定は平文のメールで管理者に届きます。
※コメントを書くために<b>ボールド</b>、<pre>詩文やソースコード</pre>、<a href="">リンク</a>、その他のHTMLタグが使えます。また、漢字[かんじ]でルビが、[google: キーワード] で検索指定が使えます。


ランダムことわざ: 身から出た錆。

今日のネットの話題: アジアがすごいぜ。英語やろうぜ。