前人未踏の領域へ WEB・インフラ・プログラミング全般編

フロントエンド、バックエンド、インフラ、言語など、アプリ開発、IOT以外の記録

曜日付きで日付を表示する

課題

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日(金)"

参考

docs.ruby-lang.org qiita.com www.sejuku.net

/* Responsive: yes */