1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【学習記録】Rubyで現在時間を取得して、時間毎に違う挨拶文を出力してみた。

Last updated at Posted at 2020-05-21

##はじめに

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. 日付と時刻を扱う(全パターン網羅)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?