|
|
1
1
一种可能是通过
即
其中一个限制是,它不会处理日期的某些部分的前导0,例如,如果您想接受2010-6-1,但是
另外,我不确定这是不是你的意思,但你的第二个例子
|
|
|
2
0
一种方法是定义一个首先进行验证的新类。 require 'date'
class Mydate
def self.strptime(string)
raise ArgumentError 'Fail' if string !~ /^\d\d\d\d-\d\d-\d\d$/
Date.strptime(string)
end
end
d = Mydate.strptime '2001-01-01'
puts d
d2 = Mydate.strptime '2001-01-02xxxx'
puts d2
另一种方法是打开日期类,为strptime方法加别名,编写一个新的方法来执行所需的验证,然后调用别名方法。 require 'date'
class Date
class << self
alias :orig_strptime :strptime
end
def self.strptime(string)
puts "in new strptime"
raise ArgumentError 'Fail' if string !~ /^\d\d\d\d-\d\d-\d\d$/
Date.orig_strptime(string)
end
end
d = Date.strptime '2001-01-01'
puts d
d2 = Date.strptime '2001-01-02xxxx'
puts d2
|