2011-04-21 41 views

回答

11

您可以使用valid_date?但它YYYY, MM, DD

irb(main):015:0> require 'date' 
=> true 
irb(main):021:0> Date::valid_date?(2011,05,14) 
=> true 
irb(main):022:0> Date::valid_date?(2011,02,29) 
=> false 
irb(main):023:0> Date::valid_date?(2012,02,29) 
=> true 
+0

我找不到「valid_date?」的文檔。你能分享一個指針嗎? – 2011-04-22 03:12:53

+0

實際上,在很多文檔中都是'valid_civil?' - http://corelib.rubyonrails.org/classes/Date.html#M001222但是'valid_civil?'它是'valid_date?'的別名? – 2011-04-22 05:16:11

+0

好的,非常感謝! – 2011-04-22 10:38:44

0

一種選擇是使用類似:

require 'time' 

def valid(year,month,day) 
    Time.parse "#{year}#{month}#{day}" rescue return false 
    return true 
end 
4

日期有一個方法valid_civil? 。

require 'date' 
dates = DATA.readlines.map{|line| line.split(', ').map(&:to_i)} 
dates.each do |date| 
    d, m, y = date 
    puts Date.valid_civil?(y, m, d) 
end 

__END__ 
14, 05, 2011 
29, 02, 2011 
29, 02, 2012 
35, 11, 1989 
14, 18, 2011 
14, 00, 2011 
00, 11, 1979 
31, 11, 1979 
+0

對於那些想知道的,這是'官方',記錄的名稱,而'valid_date?'是這個方法的別名。 – Phrogz 2011-04-21 16:22:25

相關問題