私は Ruby にかなり慣れていないので、Date クラスを拡張して、月の最初の日曜日を返す関数を追加しようとしています。これは月間カレンダーを描くのに役立ちます。9 月が土曜日に始まるとします。次に、この関数が 8 月 26 日を返すようにしたいと思います。これは、カレンダーが最初に描画する必要がある日付です。
私はこれをirbで次のように動作させています:
fs = Date.today - Date.today.mday + 1
fs = fs - fs.wday
だから今、私は日付クラスを次のように拡張しようとしています
class Date
def first_of_month
return Date.new(self.year, self.month, 1)
end
def first_sunday_of_first_week
return self.first_of_month - self.wday
end
end
月初の方法はうまくいくようです。月の最初の日曜日はありません。Date.new が見つからないことと関係があると思いますが、これをやり直そうとしてもうまくいかないようです。Sinatra アプリを作成しているので、これを行うレール機能がありません。
ここでの関数は、両方のメソッドで月の初日を返しますが、月の最初の日曜日は返しません。
この拡張メソッドを正しく機能させるにはどうすればよいですか? ありがとう
アップデート:
class Date
def first_of_month
return Date.new(self.year, self.month, 1)
end
def first_sunday_of_first_week
first_of_month - first_of_month.wday
end
end
これは機能しているように見えますが、それは正しいですか、それとも必要以上の作業を強制していますか? これを Date.new に作成して返すようにしないのですか?