如何找到年份,月份,星期几以及红宝石中出现的星期的日期编号

时间:2016-05-10 17:18:16

标签: ruby date

所以我对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。

2 个答案:

答案 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)

Ruby中的

date不是宝石,它是标准库的一部分,除非你require,否则它不会被加载。 (在Ruby中,require用于两种用途,加载gems并加载默认情况下未加载的标准库部分。)

我不知道任何可以计算日期的内置功能,我认为您必须自己编写,因为您不想考虑其他宝石。