做出来了

[参考书 :Ruby Cookbook]
def every_saturday(d1, d2)
# You can use 1.day instead of 60*60*24 if you're using Rails.
one_day = d1.is_a?(Time) ? 60*60*24 : 1
saturday = d1 + ((6-d1.wday) % 7) * one_day
while saturday < d2
yield saturday
saturday += one_day * 7
end
end
def print_every_saturday(d1, d2)
i = 0
every_saturday(d1, d2) { |saturday| i = i + 1 }
return i
end
def every_sunday(d1, d2)
# You can use 1.day instead of 60*60*24 if you're using Rails.
one_day = d1.is_a?(Time) ? 60*60*24 : 1
sunday = d1 + ((7-d1.wday) % 7) * one_day
while sunday < d2
yield sunday
sunday += one_day * 7
end
end
def print_every_sunday(d1, d2)
i = 0
every_sunday(d1, d2) { |sunday| i = i + 1 }
return i
end
def print_working_days(year, month)
days_in_month = (Date.new(year,12,31).to_date << (12-month)).day
if month < 12
saturday_in_month = print_every_saturday(Time.local(year, month, 1), Time.local(year, month+1, 1))
sunday_in_month = print_every_sunday(Time.local(year, month, 1), Time.local(year, month+1, 1))
else
saturday_in_month = print_every_saturday(Time.local(year, month, 1), Time.local(year+1, 1, 1))
sunday_in_month = print_every_sunday(Time.local(year, month, 1), Time.local(year+1, 1, 1))
end
working_days = days_in_month - saturday_in_month - sunday_in_month
return working_days
end
[
本帖最后由 bluesnake 于 2008-5-28 18:15 编辑 ]