所以我对ruby不熟悉并且不熟悉Date gem的语法,但是有没有办法像父亲节一样找到移动假期的日期?
所以我现在的移动假期课程看起来像这样:
output
我的输入如下:
class MovingHoliday < Holiday
def initialize (name, month, day_of_week, week, year=2016)
@name = name
@month = month
@day_of_week = day_of_week
@week = week
@year = year
@my_date = Date.new(year, month, day)
end
end
6是月份,&#34;星期日&#34;很好的是day_of_the_week,4是它的一周。 如果有任何可以/可以进行转换的话,我就无法弄清楚语法。 我不能使用任何其他宝石,然后rubys Date。
答案 0 :(得分:3)
class MovingHoliday < Holiday
def initialize (name, month, day_of_week, week, year=2016)
@name = name
@month = month
@day_of_week = day_of_week
@week = week
@year = year
@my_date = Date.new(year, month, 1)
@my_date += 1 while !my_date.send("#{day_of_week}?")
@my_date += (7 * (week - 1))
end
end
不漂亮,但它有效。它需要在本月的第一天,一天上升到一周中的正确日期,然后增加适当的周数。
目前,它假设您获得了一周中的实际日期。您可能希望以某种方式清理输入或从“sunday”转换为0(my_date.wday在星期日返回0,在星期一返回1等)
答案 1 :(得分:1)
date
不是宝石,它是标准库的一部分,除非你require
,否则它不会被加载。 (在Ruby中,require
用于两种用途,加载gems并加载默认情况下未加载的标准库部分。)
我不知道任何可以计算日期的内置功能,我认为您必须自己编写,因为您不想考虑其他宝石。