使用ruby进行无年份日期间检查

9w11ddsr  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(233)

我想知道日期是不是每隔一段时间来,而不是一年。
例子:
日期间隔='07/01~07/10'
如果我想检查日期间隔之间的07/05,则为true,否则为false。
我怎么能用ruby找到这个?

h5qlskok

h5qlskok1#

以下是您的功能:

def is_between(x,y)
    a,b=x.split('~',2)
    y>=a && y<=b 
end

测试:

irb(main):009:0> is_between('07/01~07/10','07/05')
=> true
irb(main):010:0> is_between('07/01~07/10','07/11')
=> false

这要求日期1)具有前导 0 对于一位数的日和月,以及2)使用完全相同的格式,因为这是基于字符串比较的。

n53p2ov0

n53p2ov02#

这里有一个依赖于日期比较(而不是字符串比较)的选项。它可以很容易地适应其他日期格式:

def in_interval?(string_date, string_date_interval)
  date = string_date.to_date
  date_interval = string_date_interval.split('~').map(&:to_date)
  Range.new(*date_interval).cover?(date)
end

in_interval?('07/10', '07/01~07/10')

如果您需要其他日期格式,可以使用 Date.strptime(string_date, '%m/%d') 而不是 to_date .
您可以在此处找到指令列表:https://ruby-doc.org/stdlib-2.6.7/libdoc/date/rdoc/date.html#strptime-方法

相关问题