少し前に「今寝ると睡眠時間はどれくらいなのか」を表示するスクリプトをRubyで書いてみた。今回は、前回の機能に追加して、朝、家を出るまであと何分あるのかを表示するようにした。稚拙なスクリプトだが、遅刻癖のある方は試してみると良いかもしれない。
例によって使い方は、タスクスケジューラ(プログラム>アクセサリ>システムツール)にスクリプトを登録する。私は午前7時から8時まで5分おきに実行し、午後8時から11時まで30分おきに実行している。
now = Time.now
# 起床時刻は翌日の6時30分
getup_time = Time.local(now.year, now.month, now.day + 1, 6, 30)
# 準備開始時刻は当日の7時20分
prepare_time = Time.local(now.year, now.month, now.day, 7, 20)
# 出発時刻は当日の7時30分
going_time = Time.local(now.year, now.month, now.day, 7, 30)
# 現在時刻を表示して1秒待つ
puts "現在時刻:"
puts now.strftime("%H 時 %M 分")
puts
sleep 1
class TimeLength
def initialize(time)
@seconds = time - Time.now
end
def format
flag = "あと "
if @seconds < 0
@seconds = -@seconds
flag = "《超過》 "
end
minutes = (@seconds / 60).round
hours = (minutes / 60).round
minutes = minutes % 60
flag + hours.to_s + " 時間 " + minutes.to_s + " 分"
end
end
case
# 午前8時以前ならば
when now.hour <= 8
# 現在時刻を表示して1秒待つ
ptl = TimeLength.new(prepare_time)
puts "準備開始時刻まで:"
puts ptl.format
puts
sleep 1
# 当日の起床時刻までの時間を表示
gtl = TimeLength.new(going_time)
puts "出発時刻まで:"
puts gtl.format
puts
sleep 1
# 午前8時以降ならば
when now.hour > 8
# 翌日の起床時刻までの時間を表示
utl = TimeLength.new(getup_time)
puts "起床時刻まで:"
puts utl.format
sleep 1
end
sleep 3