Create  Edit  Diff  FrontPage  Index  Search  Changes  RSS  Login

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'))

--たむら

Last modified:2006/05/09 23:27:46
Keyword(s):
References:[PluginList]