till.rb
〜の日まで、あと○日プラグイン
対応バージョン: 1.5.3(release) にて確認
def till(talken, frmt="%sまで,あと%d日",dfrmt="%Y年%m月%d日") date_str, eventday = talken.split(/\|/) return talken unless %r|^\d{8}|.match(date_str) to = Time::local(*date_str.unpack('A4A2A2')) interv = (to - Time::now.localtime)/(60*60*24) + 1 if eventday return format(frmt,eventday,interv) else return format(frmt,to.strftime(dfrmt),interv) end end if $0 == __FILE__ puts till("20030505|子供の日") puts till("20030505") puts till("子供の日") puts till("20030505","%sまでたったの%d日しかないのかよっ","%m/%d") end
<%= till "20030407|アトムに戸籍ができる"%>
のように埋め込むと
アトムに戸籍ができるまで,あと18日
のように表示します。さまざまな表示形式を指定できます。ちなみに上のスクリプトの出力は
% ruby till.rb 子供の日まで,あと46日 2003年05月05日まで,あと46日 子供の日 05/05までたったの46日しかないのかよっ
となります。
Changelog
- 2003-03-26
- Time::local の引数は String でも大丈夫なので修正(Thanx Kitaj)
- to = Time::local(*date_str.unpack('A4A2A2').collect{|d|d.to_i }) + to = Time::local(*date_str.unpack('A4A2A2'))
--たむら
Keyword(s):
References:[PluginList]