【发布时间】:2011-07-25 08:30:44
【问题描述】:
我正在尝试使用 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() 始终出现“无效日期”错误——因为它试图以“dd/mm/yyyy”格式解析日期。
从我的谷歌搜索中,我被引导相信,在解析 DateTime 对象时,编译器会查看传入的字符串并进行一些仓促的模式匹配,然后映射“mm/dd/yyyy”和“dd-mm- yyyy”,因此根据美国/英国(等)标准,根据是否使用斜线或破折号作为分隔符。然而,情况似乎并非如此,我想知道为什么。以及如何解决它。
这就是我播种会议的方式——第一个正确解析,第二个失败。
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")
}])
【问题讨论】:
-
尝试将零添加到小时
:startDate => DateTime.parse("09/14/2009 08:00") -
@fl00r 不,那没用;我为“09/01/2009 08:00”添加了一个种子并且有效。困难的是日期。
-
尝试将日期以更明显的格式供解析器使用:
2009-09-01 8:00 -
我正在播种 700 个日期;重写它们不是一种选择。坦率地说,我的谷歌搜索表明 mm/dd/yyyy 是解析器的明显格式。 :)
标签: ruby ruby-on-rails-3 data-migration