闲来没事,用Ruby写个小程序。 感觉那个Date类,取得指定月的最后一天有点麻烦,为什么不封装一个方法直接获取呢。
直接上代码吧
#! ruby -Ku
require "date"
$weekdays = %w{日 一 二 三 四 五 六}
#打印日期头
def dispWeekName
$weekdays.each { |weekName|
print(weekName + "\t")
}
print("\n")
end
#日历类
class CalInfo
attr_reader :year, :month, :curDate, :first_day_week, :last_day
def initialize(year, month)
#年
@year = year
#月
@month = month
#指定年月的Time类实例
cur_date = Date.new(year, month, 1)
#表示指定月,当月最后一天的Date实例
lastday_of_month_date = Date.new(year, month, -1)
#指定月第一天是星期几
@first_day_week = cur_date.wday
#指定月最后日
@last_day = lastday_of_month_date.mday
end
end
def dispCal(cal)
(cal.first_day_week).times {
print("\t")
}
day_week = cal.first_day_week
(1..(cal.last_day)).each {|day|
print(day.to_s + "\t")
day_week += 1
if day_week % 7 == 0 then
print("\n")
day_week = 0
end
}
end
cal = CalInfo.new(2013, 2);
dispWeekName()
dispCal(cal)
运行结果如下:
接下来,准备改成可以接受命令行参数的,这样就可以动态打印指定年月的日历了。