0

我需要一个出生日期作为 Ruby on Rails 应用程序中的纯文本。所以这是我用来做它的代码的主要部分

   if @date_of_birth_as_text.present? and Date.parse(@date_of_birth_as_text).nil?
      errors.add :date_of_birth_as_text, "cannot be parsed"
    end

因此,它使一切都成为日期。看看,还蛮奇怪的

1.9.3p194 :002 > Date.parse("12 12 addd")
 => Sun, 12 Aug 2012 
1.9.3p194 :003 > Date.parse("12 12 october")
 => Fri, 12 Oct 2012 
1.9.3p194 :004 > Date.parse("12 13 october")
 => Sat, 13 Oct 2012 
1.9.3p194 :005 > Date.parse("13 13 october")
 => Sat, 13 Oct 2012 
1.9.3p194 :006 > Date.parse("13 13 2012")
 => Mon, 13 Aug 2012 
1.9.3p194 :007 > Date.parse("13 01 2012")
 => Mon, 13 Aug 2012 
1.9.3p194 :008 > Date.parse("10 01 2012")
 => Fri, 10 Aug 2012 
1.9.3p194 :009 > Date.parse("10 01 2010")
 => Fri, 10 Aug 2012 

我想稍微改变一下。我想要一个格式的日期,"MM (any delimeter or not) dd (any delimeter or not) YYYY"或者 "dd (any delimeter) MM (any delimeter) YYYY"可以解析。或类似的东西,但不是“12 12 add”。

我怎样才能达到它?

PS我看到gemchronic,请不要建议我这样做。

4

1 回答 1

0

尝试使用 Date.strptime:

1.9.3-p194 :017 > Date.strptime( '08-29-2012', '%m-%d-%Y' )
 => #<Date: 2012-08-29 ((2456169j,0s,0n),+0s,2299161j)> 

文档:http ://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/Date.html#method-c-strptime

于 2012-08-29T07:12:45.693 回答