はじめに
普段、Evernoteにその日走ったランニングの距離や、気になったことを日記みたいな形で書いています。1ページ1ヶ月として書いているので、そのためのフォーマットを作成したいと思います。
練習
diaryformat.rb
def diary_format(first_day, last_day)
day_numbers = [*(first_day..last_day)].reverse
weeks = ['Mon.', 'Tue.', 'Wed.', 'Thr.', 'Fri.', 'Sat.', 'Sun.']
day_numbers.each{|day_number|
if day_number % 7 == 0
puts '---------------'
puts "2016/02/#{day_number} #{weeks[6]}"
puts '- Wake Up Time : 00:00'
puts '- Bedtime : 00:00'
puts '- Running : 00km'
puts '- Body Weight : 00kg'
puts '- Programming : '
puts '- Study of English : '
puts '- Diary : '
puts "\n\n"
elsif day_number % 7 == 1
puts '---------------'
puts "2016/02/#{day_number} #{weeks[0]}"
puts '- Wake Up Time : 00:00'
puts '- Bedtime : 00:00'
puts '- Running : 00km'
puts '- Body Weight : 00kg'
puts '- Programming : '
puts '- Study of English : '
puts '- Diary : '
puts "\n\n"
elsif day_number % 7 == 2
puts '---------------'
puts "2016/02/#{day_number} #{weeks[1]}"
puts '- Wake Up Time : 00:00'
puts '- Bedtime : 00:00'
puts '- Running : 00km'
puts '- Body Weight : 00kg'
puts '- Programming : '
puts '- Study of English : '
puts '- Diary : '
puts "\n\n"
elsif day_number % 7 == 3
puts '---------------'
puts "2016/02/#{day_number} #{weeks[2]}"
puts '- Wake Up Time : 00:00'
puts '- Bedtime : 00:00'
puts '- Running : 00km'
puts '- Body Weight : 00kg'
puts '- Programming : '
puts '- Study of English : '
puts '- Diary : '
puts "\n\n"
elsif day_number % 7 == 4
puts '---------------'
puts "2016/02/#{day_number} #{weeks[3]}"
puts '- Wake Up Time : 00:00'
puts '- Bedtime : 00:00'
puts '- Running : 00km'
puts '- Body Weight : 00kg'
puts '- Programming : '
puts '- Study of English : '
puts '- Diary : '
puts "\n\n"
elsif day_number % 7 == 5
puts '---------------'
puts "2016/02/#{day_number} #{weeks[4]}"
puts '- Wake Up Time : 00:00'
puts '- Bedtime : 00:00'
puts '- Running : 00km'
puts '- Body Weight : 00kg'
puts '- Programming : '
puts '- Study of English : '
puts '- Diary : '
puts "\n\n"
elsif day_number % 7 == 6
puts '---------------'
puts "2016/02/#{day_number} #{weeks[5]}"
puts '- Wake Up Time : 00:00'
puts '- Bedtime : 00:00'
puts '- Running : 00km'
puts '- Body Weight : 00kg'
puts '- Programming : '
puts '- Study of English : '
puts '- Diary : '
puts "\n\n"
end
}
end
day_number_week(1,29)
改善点(よく分からない)
- 月が変わると曜日がズレてしまう。(現在は2月用)
- 重複している点を除く。
追記(2016-02-18)
コメントを参考に改善してみました。Dateクラスを使えば良かったのですね...。
Date#wday
はとても便利ですね。その日の曜日を0-6までの値で返してくれるもので、例えば日曜日なら0、月曜日なら1を返してくれます。そして求めたい日の曜日は、まず曜日の配列を日曜日からつくり、その配列をwdayメソッドで取得した値(0-6)で参照することで、取得できます。勉強になりました。
diaryformat2.rb
require "date"
youbi = %w(Sun. Mon. Tue. Wed. Thr. Fri. Sat.)
start_date = Date.parse("2016-02-01")
end_date = Date.parse("2016-02-29")
(start_date..end_date).each do |date|
puts <<-EOT
---------------
#{date.strftime("%Y/%m/%d")} #{youbi[date.wday]}
- Wake Up Time : 00:00
- Bed Time : 00:00
- Running : 00km
- Body Weight : 00kg
- Programming :
- Study of English :
- Diary :
\n
\n
EOT
end