前提・実現したいこと
Rubyでカレンダーのプログラムを書いていて下の様なカレンダーを完成させたいです。
December 2020 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
該当のソースコード
ruby
1require "date" 2require 'optparse' 3day = Date.today 4options = ARGV.getopts("y:", "m:") 5 6if options["y"] 7 year = options["y"].to_i 8else 9 year = day.year 10end 11 12if options["m"] 13 month = options["m"].to_i 14else 15 month = day.mon 16end 17 18head = Date.today.strftime("%B, %Y") 19year = Date.today.year 20mon = Date.today.mon 21firstday = Date.new(year,mon, 1).wday 22lastday = Date.new(year,mon, -1).day 23week = %w(Su Mo Tu We Th Fr Sa) 24 25puts head.center(20) 26puts week.join(" ") 27print " " * firstday 28 29wday = firstday 30(1..lastday).each do |date| 31 print date.to_s.rjust(2) + " " 32 if day.wday == 6 33 puts "\n" 34 end 35end
発生している問題・エラーメッセージ
下の様に改行がうまくいかないのですが、
[Running] ruby "/Users/shotaito/ruby-practices/02.calendar/calendar.rb" December, 2020 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [Done] exited with code=0 in 0.339 seconds
出力結果
January, 2021 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
一番最後のスコープでこちらのコードをどのように修正すればいいか分からないので教えていただけますでしょうか?
if day.wday == 6 puts "\n" end
補足情報(FW/ツールのバージョンなど)
Mac、VScode(テキストエディタ)
該当のソースコード
require "date" require 'optparse' day = Date.today options = ARGV.getopts("y:", "m:") if options["y"] puts year = options["y"].to_i else puts year = day.year end if options["m"] puts year = options["m"].to_i else puts year = day.mon end head = Date.today.strftime("%B, %Y") year = Date.today.year mon = Date.today.mon firstday = Date.new(year,mon, 1).wday lastday = Date.new(year,mon, -1).day week = %w(Su Mo Tu We Th Fr Sa) puts head.center(20) puts week.join(" ") print " " * firstday wday = firstday (1..lastday).each do |date| print date.to_s.rjust(2) + " " if Date.new(year,mon,date).wday == 6 puts "\n" end end
出力結果
% ruby calendar.rb -y 2030 -m 5 January, 2021 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 %
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/04 08:47 編集
2021/01/02 11:39
2021/01/02 12:34