課題
Rubyで現在の日付を曜日付きのJPフォーマット 2019年11月15日(金)
で返したい。 どうするのがよいか。
結論
I18nにそのものが定義されてた。
I18n.l Date.today, format: :long => "2019年11月15日(金)"
フォーマットは strftime に従っているので ja.yml
を編集して自分で定義することも可能
対応(I18nを使わない場合)
I18n使えば良いということが分かったので以下は試行錯誤の残骸。
直接ズバリ 金
とか返してくれる方法はなさそうだったので参考サイトの情報を元に適当に見繕うことにする。
とりあえず日付は以下で取れるので、
> Date.today.strftime '%Y年%-m月%-d日' => "2019年11月15日"
あとは曜日について考える。 曜日の日本語表記は自前で配列を持つ
> DAT_OF_WEEK = ["日", "月", "火", "水", "木", "金", "土"]
この配列の位置を取得するために 'Time.strftime'の'%u'と'%w'フォーマット、または Time.wday
メソッドが利用できるがwdayが目的にかなってもっともシンプルだろう。
> DAT_OF_WEEK[Date.today.wday] => "金"
日付とくっつけておしまい。
Date.today.strftime("%Y年%-m月%-d日(#{DAT_OF_WEEK[Date.today.wday]})") => "2019年11月15日(金)"