Время по Гринвичу сбрасывается до 2000-01-01 (ruby). Как предотвратить сброс времени? - PullRequest
2 голосов
/ 22 сентября 2011

Я использую задачу и гем электронных таблиц для чтения электронных таблиц 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

Кажется, это работает нормально. Если я вставлю в этот последний цикл оператор «Поместите 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 Ответ

8 голосов
/ 22 сентября 2011

Вы используете класс Time.Этот класс имеет дело со временем, а не с датами.Я предполагаю, что ваш столбец базы данных также имеет тип time.

Я рекомендую вам использовать тип столбца datetime (или, возможно, timestamp).

...