##はじめに
ProgateでRubyの学習を始めて約1か月。インプット過多になり始めていたので、
初めてテーマを決めてプチ成果物を作ってみました。
記事投稿練習を兼ねて投稿します!
所要時間は3時間ほどかかりました。。
簡単な流れとしては、
現在時間を取得 → 出力を変えたい時間をグループ分け → if文で挨拶文を出力
といった感じです。
time = Time.now
まず現在時間を取得します。
require "time"
# morning = m
m1 = Time.parse("6:00:00")
m2 = Time.parse("10:59:59")
# afternoon = a
a1 = Time.parse("11:00:00")
a2 = Time.parse("16:59:59")
# evening = e
e1 = Time.parse("17:00:00")
e2 = Time.parse("1:59:59")
#上記以外の時間帯は(2:00:00 ~ 5:59:59) zzz...で出力
if文で現在時刻と指定時刻を比較したいので、朝・昼・夜でそれぞれ時間指定をします。
この時、**Time.parse("時:分:秒")**とすることで、ただの文字列からTimeオブジェクトに変換しています。
詳しくは下記に参考文献を載せています。
if m1 <= time && time <= m2
puts "おはようございます"
elsif a1= time && time <= a2
puts "こんにちは"
elsif time <= e2 || e1 <= time
puts "こんばんは"
else
puts "Zzz..."
end
グループ分けした指定時刻と、現在時刻を比較して挨拶文を出力します。
少しわかりにくいですが、
朝(6:00:00)~(10:59:59)の時間帯→ おはようございます
昼(11:00:00)~(16:59:59)の時間帯→ こんにちは
夜(17:00:00)~(1:59:59)の時間帯→ こんばんは
その他(2:00:00 ~ 5:59:59)の時間帯→ zzz...
と出力されます。
##感想(主につまづいたところ)
- 現在の"時間"のみの取得
- 指定時刻を文字列から変換
- if文の作成(時間軸の関係で最後のelsifだけ"または"になる)
##参考文献
Ruby入門 14. 日付と時刻を扱う(全パターン網羅)