如何在Rails中定义时间间隔?

时间:2014-01-09 06:26:34

标签: ruby-on-rails

有以下任务:我需要在db(PostgreSQL)中存储一些时间间隔;例如,下午1点 - 下午2点我可以测试某个时间间隔是否存在某个时间。我该怎么做呢?可能有一些宝石吗?谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以按@Santosh说的那样保存列,然后如果您需要根据时间范围检查某些内容,可以使用这个有用的类:

Time-of-day range in Ruby?

class TimeRange
    private

    def coerce(time)
        time.is_a? String and return time
        return time.strftime("%H:%M")
    end

    public

    def initialize(start,finish)
        @start = coerce(start)
        @finish = coerce(finish)
    end

    def include?(time)
        time = coerce(time)
        @start < @finish and return (@start..@finish).include?(time)
        return !(@finish..@start).include?(time)
    end
end

可以这样使用:

irb(main):013:0> TimeRange.new("02:00","01:00").include?(Time.mktime(2010,04,01,02,30))
=> true
irb(main):014:0> TimeRange.new("02:00","01:00").include?(Time.mktime(2010,04,01,01,30))
=> false
irb(main):015:0> TimeRange.new("01:00","02:00").include?(Time.mktime(2010,04,01,01,30))
=> true
irb(main):016:0> TimeRange.new("01:00","02:00").include?(Time.mktime(2010,04,01,02,30))
=> false