2019/09/23_木刀、腰にサースデー(Rubyで「月曜日~日曜日」を表示)
はじめに
最近は、個人開発をしています。
RubyでHTTP通信をして、外部APIを使う構想なんですが、全然やったことなくって、
かなり行き詰まっておりました。
(なんとなくできるようになったので、後日書きたいと思ってます。)
今日は、別件で覚えたことを書きます。
Dateクラスを使って、日本語の曜日を表示する(Ruby)
Dateクラスを使って表示できる曜日の中に日本語の表記(月曜日、火曜日、…)は、ないらしいです。
せめて火曜日と木曜日だけでも日本語表記にしなければ!と思っているので、そういう例題を設定してみました笑
(理由は「チューズデー」と「サースデー」のスペルがあいまいなまま、義務教育を終えてしまったためです…)
例題
今日の曜日を出力してください。
なお、「火曜日」と「木曜日」だけ日本語とし、それ意外の曜日は、英語表記とする。
回答例
require "date" # 日本語の曜日を出力するメソッド def show_japanese(number) puts %w(日 月 火 水 木 金 土)[number] + '曜日' end # 英語の曜日を出力するメソッド def show_english puts Date.today.strftime('%A') end # 日本語用の曜日番号を出力 day_number = Date.today.wday if day_number == 2 || day_number == 4 show_japanese(day_number) else show_english end
解説
date
クラスは、Rubyの標準ライブラリですが、あらかじめ組み込まれていないので、require
で呼び出します。メソッド
show_japanese
で日本語の曜日を生成&表示させます。%w(〜)
は配列を作成します。
(つまり["日","月","火","水","木","金","土"]
ができる)- 配列の呼び出し番号は、
day_number
変数を使って設定。(説明は↓)
変数
day_number
は、配列から本日の曜日を呼び出すために定義しております。Date.today
で本日の情報をDateオブジェクトで取得。wday
は曜日に応じた番号を返すメソッド。(日曜日が「0」、月曜日が「1」…)
メソッド
show_english
で英語表記の曜日を出力する。Date.today
は既出。strftime
メソッドで、今日のDateオブジェクトの表記を編集し、曜日だけ表示。
条件分岐(if)で曜日に応じた表記を設定。
参考
- 標準ライブラリ(Ruby 2.6.0)
- class Date (Ruby 2.6.0)
- %記法(ruby2.6.0)
- wday
- [Ruby] 日付から曜日を日本語で取得する - Qiita
- singleton method Date._strptime (Ruby 2.6.0)
あとがき
「木刀腰にサースデー」は、テレビ(たしか「うたばん」)で磯野貴理子さんが言ってて、覚えました。
当時、お腹がよじれるほど笑ったんで、まだ覚えてました笑