記憶の外付けHDD

切実に頭にUSBのコネクターがほしいです。なるべくtype-cでお願いしたいです。(忘れないように、プログラミング学習で学んだことを投稿してます)

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)で曜日に応じた表記を設定。

参考

あとがき

「木刀腰にサースデー」は、テレビ(たしか「うたばん」)で磯野貴理子さんが言ってて、覚えました。
当時、お腹がよじれるほど笑ったんで、まだ覚えてました笑