我刚刚找到rails Date格式的错误吗?

hb9*_*922 1 format ruby-on-rails date

在试图解析约会时,我已经绞尽脑汁待了好几个小时:

Date.today.to_s
=> "06/07/2011" 

Date.today
=> Tue, 07 Jun 2011 

Date.parse Date.today.to_s
 => Wed, 06 Jul 2011 

Date::DATE_FORMATS[:default]
 => "%m/%d/%Y" 
Run Code Online (Sandbox Code Playgroud)

to_s的默认格式与解析的默认格式不同?他们为什么要这样对我?

使用Rails 3.0.5和Ruby 1.9.2-p180

更新 所以感谢你的回答,我意识到DATE_FORMATS是一个rails事物,而Date.format正在使用ruby库(正确吗?).有没有办法用默认的DATE_FORMAT解析日期/时间而不使用strptime?

Dyl*_*kow 5

通常,Date.today.to_s会返回"2011-06-07",但由于您设置了默认日期格式,因此它使用的是"06/07/2011".

Date.parse很容易识别YYYY-MM-DD格式,但当它看到06/07/2011时,它认为真的是DD/MM/YYYY(不是MM/DD/YYYY,正如你所期待的那样 - 请记住,Date.parse对Rails一无所知'您设置的默认日期格式.默认日期格式仅适用于Rails的输出Date.to_s).

您可以强制它解析MM/DD/YYYY日期,如下所示:

Date.strptime(Date.today.to_s, "%m/%d/%Y")
# => Tue, 07 Jun 2011
Run Code Online (Sandbox Code Playgroud)