`
ibelieve1314love
  • 浏览: 19122 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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)

运行结果如下:

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics