3

У меня есть 2 столбца в таблице в моей базе данных, 1 - дата и 1 - время. Мне нужно использовать ActiveRecord, чтобы объединить их в объект DateTime. Каков наилучший способ?Объединение даты и времени ActiveRecord в DateTime

1.9.3-p194 :053 > date.class 
=> Date 
1.9.3-p194 :054 > time.class 
=> Time 
1.9.3-p194 :055 > date.to_time_in_current_zone 
=> Wed, 04 Sep 2013 00:00:00 PDT -07:00 
1.9.3-p194 :056 > date.to_time_in_current_zone + time 
TypeError: not an integer 

Я могу добавить отдельные поля времени, и это, кажется, работает:

1.9.3-p194 :062 > date.to_time_in_current_zone + time.hour.hours + time.min.minutes + time.sec.seconds 
=> Wed, 04 Sep 2013 12:30:00 PDT -07:00 

Это не включает миллисекунды, делает Time не миллисекунды? Не конец света, если у меня не будет миллисекунд, но есть ли лучший способ сделать это?

+1

Нравится? http://stackoverflow.com/questions/12181444/ruby-combine-date-and-time-objects-into-a-datetime – Luke

+0

@ Luke - похоже, хотя мой вопрос касается Rails «Дата» и «Время». Я бы подумал, что у Rails будет механизм поддержки этого, если Ruby этого не сделает. –

+0

Быстрое прочтение документов Rails, похоже, предполагает, что это не так (http://api.rubyonrails.org/classes/DateTime.html, http://api.rubyonrails.org/classes/Date.html, http: //api.rubyonrails.org/classes/Time.html). – Luke

ответ

10

Извините, что заглядывал в середине, фактически, я немного новый в рельсах около 8 месяцев, Его, как маленький человек, разговаривающий между большими людьми. Я также сталкиваюсь с этим же вопросом, я получил поездку от этого с помощью

date_time= (date.to_s + " " +time.to_s).to_datetime 

Я не известен, если его правильно или неправильно, но моя проблема была решена. плз дайте мне обратную связь по этому поводу :)

Кроме того, Time имеет миллисекунды, которые могут быть доступны через #strftime с директивой формата %L. Кроме того, можно получить доступ к меньшим донным частям секунд, используя %N.

+0

Г-н. Вопрос: Если мой ответ прав или неправ, что бы это ни было, дайте мне отзыв об этом: P –

1
merged_datetime = DateTime.new(date_to_merge.year, date_to_merge.month, 
           date_to_merge.day, time_to_merge.hour, 
           time_to_merge.min, time_to_merge.sec)