ran*_*its 3 ruby ruby-on-rails date mongodb
我有一个类型为Date的Mongoid字段.我在搜索针对这个特定领域的文档时遇到了各种各样的麻烦.我以这种格式收到日期作为字符串:10/20/2013.我认为类似的东西Date.parse("10/20/2013")或者"10/20/2013".to_date足够让我做类似的东西,MyModel.find_by(datefield: date_result)但是这给了我大量的ArgumentError超出范围类型的问题.
将"10/20/2013"转换为Date可用于查询数据库的简单对象的最简单方法是什么?
你得到这个:
Date.parse("10/20/2013")
ArgumentError: invalid date
Run Code Online (Sandbox Code Playgroud)
问题是10/20.Ruby是一种国际语言,价值观10和20模糊不清.在美国,"标准"日期格式为"MMDDYYYY",或者%m%d%Y在日期解析术语中.世界上大多数人使用不同的标准,"DDMMYYYY"或%d%m%Y.Ruby使用第二种格式,第一种格式.
看看差异,很容易看出为什么Date.parse会混淆和抱怨.10这是一个明智的日子,但是20一个月是胡说八道,所以Ruby拒绝它.
您可以通过强制用于解析的模式来解决此问题:
Date.strptime('10/20/2013', '%m/%d/%Y')
# => #<Date: 2013-10-20 ((2456586j,0s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)