UTC时间重置为2000-01-01(ruby)。如何防止重置时间?

时间:2011-09-22 13:20:00

标签: ruby datetime time utc

我正在使用任务和电子表格gem将excel电子表格读入我的数据库。我正在读的其中一个栏目是“start_time”。为此,我正在形成一个值数组,然后逐个传递每个数组值。

  cnum_array = [] # for start times
  sheet1.each 3 do |row|
    unless row[9].blank?
      time = Time.parse(row[9])
      cnum_array << time.utc
    end 
  end

  count = 0
  for course in Course.all
    course.update_attribute :start_time, cnum_array[count]
    count += 1
  end

这似乎工作正常。如果我在最后一个循环中插入“puts course.start_time”语句,则会打印出正确的时间。像这样:

  count = 0
  for course in Course.all
    course.update_attribute :start_time, cnum_array[count]
    puts course.start_time
    count += 1
  end

这给了我正确的时间,例如“2012-01-23 15:30:00。”

但是当我稍后查看课程时(例如通过我的控制台的Course.find(1).start_time),它给了我“2000-01-01 15:20:00”。所以一天中的时间是正确的,但这一天本身可以追溯到2000-01-01。

有谁知道为什么会这样,以及我如何解决它?谢谢!

1 个答案:

答案 0 :(得分:8)

您正在使用Time课程。本课程涉及时间,而不是日期。我的猜测是你的数据库列也是time类型。

我建议您使用datetime(或可能timestamp)列类型。