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

我正在使用任务和电子表格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。

有谁知道为什么会这样,我怎么能解决它? 谢谢!

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

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