Ruby练习---指定年月日历打印

闲来没事,用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)

运行结果如下:

接下来,准备改成可以接受命令行参数的,这样就可以动态打印指定年月的日历了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值