我想知道日期是不是每隔一段时间来,而不是一年。例子:日期间隔='07/01~07/10'如果我想检查日期间隔之间的07/05,则为true,否则为false。我怎么能用ruby找到这个?
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)使用完全相同的格式,因为这是基于字符串比较的。
0
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-方法
Date.strptime(string_date, '%m/%d')
to_date
2条答案
按热度按时间h5qlskok1#
以下是您的功能:
测试:
这要求日期1)具有前导
0
对于一位数的日和月,以及2)使用完全相同的格式,因为这是基于字符串比较的。n53p2ov02#
这里有一个依赖于日期比较(而不是字符串比较)的选项。它可以很容易地适应其他日期格式:
如果您需要其他日期格式,可以使用
Date.strptime(string_date, '%m/%d')
而不是to_date
.您可以在此处找到指令列表:https://ruby-doc.org/stdlib-2.6.7/libdoc/date/rdoc/date.html#strptime-方法