From: Take_tk Date: 2002-03-17T01:30:01+09:00 Subject: [ruby-list:34470] days_in_month ← Re: Re: カレンダー文字列を作るメソッド たけ(tk)です。 [ruby-list:34465] Re: カレンダー文字列を作るメソッド にて "Miura Hideki" さん 曰く: 》 # 1 2 》 days = [0, 31, Time.local(year, 3).yday - Time.local(year, 2).yday, 》 # 3 4 5 6 7 8 9 10 11 12 》 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]  そうかぁ。うるう年かどうかは Time#yday で分かるんだ。 def days_in_month(year,month) [31, Time.local(year, 3).yday - Time.local(year, 2).yday, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month-1] end  とすると、こう言うのもありだな。 def leap_year?( year ) Time.local( year,12,31 ).yday == 366 end def days_in_month(year,month) return 29 if month==2 && leap_year?( year ) return [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month-1] end p days_in_month(2000,2) 中田さんが言っていたZellerの公式というのはこれかな?。 def leap_year?( year ) ( year % 4 == 0 )&&(( year % 100 != 0 )||( year % 400 == 0 )) end  と・・、書いているうちに新井さんから新案が・・。その月の月末の日付を調 べるだけでもいいというわけか・・。 -- 》 (1..days[month] + wday).each{|d| 》 s << "%4s" % (d <= wday ? " ": (d - wday).to_s) 》 s << "\n" if d % 7 == 0 》 }  そうかぁ。d を桁位置で考えるわけか・・。  いろいろ参考になります。・・ううう。どれを採用するかが決まらなくなって しまった・・。 Take_tk = KUMAGAI Hidetake たけ(tk)=熊谷秀武