0

各位溢出者,

我有一个制表符分隔的 csv 文件,其中包含这种格式的日期: 30-11-2011 2:24

我正在用FasterSCVgem 解析 csv。我创建了一个迁移,将此信息存储为datetime. 我应该这样做还是将其定义为stringRuby在每次检索时都将其转换?

我是否需要定义一些FasterCSV转换器?

谢谢...

4

1 回答 1

0

DateTime 有点棘手。有严格的格式

irb(main):008:0> DateTime.now
=> Fri, 02 Dec 2011 22:14:57 +0100

但你可以这样做

irb(main):015:0> t = DateTime.parse("30-11-2011 2:24").utc
=> Wed, 30 Nov 2011 02:24:00 +0000
irb(main):016:0> t.class
=> DateTime

现在你有了一个 DateTime 对象。但是,请注意解析方法结束时的时区

当您填充数据库时,请使用 db 文件夹中的 seed.rb 文件。我通常在 db 文件夹中创建一个文本文件,使用我的编辑器并将所有选项卡替换为“|” 并为每一行制作一个数组让我们说它看起来像这样(假设它是一个待办事项列表)

待办事项文件

make hay|30-11-2011 2:24
fix tractor|24-11-2011 2:14

种子.rb 文件

open("db/todo") do |todos|
  todos.read.each_line do |todo|
    n = todo.chomp.split("|")
    Todo.create!(:entry => n[0], :at_date => DateTime.parse("#{n[1]}").utc)
  end
end

然后运行

rake db:seed

制作一些红宝石魔法!我没有测试过这段代码,但它可能会把你推向正确的方向

于 2011-12-02T21:36:37.757 回答