我试图使用db/seed.rb文件和rake db:seed命令将一些数据植入我正在开发的Rails 3应用程序中。
我正在植入的数据涉及一个名为Meeting的数据库表,该表有三列:字符串标题,日期时间startDate,日期时间endDate。我尝试插入的日期时间是“mm/dd/yyyy hh:mm”格式--例如,“01/02/2003 13:23”= 2003年1月2日下午1:23。但是,DateTime.parse()总是错误地输出“invalid date”错误--因为它试图解析“dd/mm/yyyy”格式的日期。
从我的谷歌搜索中,我相信当解析DateTime对象时,编译器会查看传入的字符串,并进行一些快速的模式匹配,然后根据美国/英国(等)的标准,根据是否使用斜杠或破折号作为分隔符,相应地Map“mm/dd/yyyy”和“dd-mm-yyyy”。然而,情况似乎并非如此,我想知道为什么,以及如何修复它。
这就是我播种Meetings的方式--第一个正确解析,第二个失败。
Meeting.create([
{
:title => "This meeting parses fine",
:startDate => DateTime.parse("09/01/2009 17:00"),
:endDate => DateTime.parse("09/01/2009 19:00")
},
{
:title => "This meeting errors out",
:startDate => DateTime.parse("09/14/2009 8:00")
:endDate => DateTime.parse("09/14/2009 9:00")
}])
4条答案
按热度按时间vwoqyblh1#
你可以试试
Date.strptime
所以
gev0vcfq2#
使用
DateTime.new
代替。这样就不用担心正确的解析了。dba5bblo3#
如果输入时间的细节不重要,您可以完全跳过格式化:
n3ipq98p4#
生成有意义的日期数据的最简单方法是使用Gem Faker:
宝石https://github.com/faker-ruby/faker
日期https://github.com/faker-ruby/faker/blob/main/doc/default/date.md