新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴
[Calendar/When/Ruby/1.実行環境/2.irb] (前:test|次:3.when.rb) (English)

2.irb

<bin>ディレクトリには下記の irb.rc がありますので、 <bin>ディレクトリをカレントディレクトリとして irb を実行すると when.exe Ruby版を対話形式で使用することができます。

 ------irb.rc--------
 require 'pp'
 require 'date'
 require 'when_exe'
 require 'when_exe/core/extension'
 require 'when_exe/mini_application'
 include When
 IRB.conf[:EVAL_HISTORY] = 100
 --------------------

irb を起動します。

 $ irb --noecho

今日は?

 irb(main):001:0> p today
 2013-05-29

現在は?

 irb(main):002:0> p now
 2013-05-29T06:11:04.62Z

デフォルトを日本時間にします。

 irb(main):003:0> TM::Clock.local_time = Parts::Timezone['Asia/Tokyo']

いつもこれを実行するのであれば、irb.rcに書いておくとよいでしょう。

日本時間で現在は?

 irb(main):004:0> p now
 2013-05-29T15:11:48.00+09:00

「今日」を意味するオブジェクトの中身をもう少し詳しく見てみます。

 irb(main):005:0> pp today.to_h(:method=>:to_m17n)
 {:frame=>"http://hosi.org/When/CalendarTypes/Gregorian",
  :precision=>0,
  :sdn=>2456442,
  :calendar=>["http://hosi.org/When/CalendarTypes/Gregorian"],
  :notes=>[[{:note=>"Month", :value=>"May"}],
           [{:note=>"Week", :value=>"Wednesday(2)"}]],
  :cal_date=>[2013, 5, 29]}

赤穂浪士の討ち入り日をグレゴリオ暦に換算すると?

 irb(main):006:0> p when?('1702-12-15^^Japanese^^Gregorian')
 1703-01-31

Calendar('Japanese')は表引きで求める日本の太陰太陽暦ですが、1948年以降は表を定義しておらず計算によっています。 歴史上の日本暦日は年号付きで指定すると安全です。

平成25年5月29日を意味するオブジェクトを作ってみましょう。

すべての暦年代をメモリ上にロードして検索するのに少し時間がかかります。

 irb(main):007:0> when?('平成25.5.29')
 平成25(2013).05.29

when_exe と端末で文字コードがあっていない場合

 ArgumentError: CalendarEraName doesn't exist: 平成

のようなエラーが出るかもしれません。この場合、 when_exe の内部動作が UTF-8 なのに端末が Windows-31J だったのです。

 irb(main):008:0> p [UTF8, W31J]
 [".UTF-8", ".Windows-31J"]

入力をUTF-8に、出力をWindows-31Jに変換してみます。

 irb(main):009:0> p when?('平成25.5.29'/UTF8).to_m17n/W31J
 "平成25(2013).05.29"

日本暦日の暦年代をメモリ上にロード済なので、今度は一瞬で返事がありました。

irb での動作は、こんな具合になります。