Ruby の Date#cwday と Date#wday について

試したバージョン

  • ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin11.4.2]

Date クラスのメソッドには wday と cwday があって2つとも曜日を数値で返します。

実際に 2014 年 4 月 13 日 日曜日を試してみます。

[2] pry(main)> d = Date.new(2014, 4, 13)
=> #<Date: 2014-04-13 ((2456761j,0s,0n),+0s,2299161j)>
[3] pry(main)> d.cwday
=> 7
[4] pry(main)> d.wday
=> 0

このように wday の場合は 日曜日が 0 を返して、 cwday の場合は 7 を返します。

マニュアルにはこう書いてあります。

Date#cwday 暦週の日 (曜日) を返します (1-7、月曜は1)。
Date#wday  曜日を返します (0-6、日曜日は零)。

月曜日を週の始まりとする場合は cwday を使用して、 日曜日を週の始まりとする場合は wday を使用すればいいのかな。

参考

暦週日付は、暦週と暦年中の序数による日付です。
暦週は、暦年中の序数によって指定される特定の7日の期間であり、月曜から 始まります。
その年の第1暦週は、最初の木曜日を含む週とします。これは、 1月4日を含む週と同じです。

2014 年 4 月の wday, cwday, cweek を表示してみた

wday と cwday と cweek