2009年9月2日水曜日

Zellerの公式

まぁ普通はZellerの公式使ってすっきり書くのでしょうねぇ・・・

weekday.rb
#!/usr/bin/env ruby

# 曜日を求める
# y ... 西暦年
# m ... 月
# d ... 日
def weekday(y, m, d)
if 2 >= m
y -= 1
m += 12
end
(y + (y / 4) - (y / 100) + (y / 400) + (13 * m + 8) / 5 + d) % 7
end

require 'date'

def check
d = Date.new(2000, 1, 1)
50000.times do
unless d.wday == weekday(d.year, d.month, d.day)
puts "#{d} ng"
break
end
d = d.next
end
end

check

0 件のコメント:

コメントを投稿