Rails计算两个日期时间之间的差异(以秒为单位)并转换为整数

时间:2013-09-23 10:46:49

标签: ruby-on-rails datetime integer coercion

我试图将total_time设置为2个日期时间项(:start_time和:end_time)之间的差异,以秒为单位。通过执行以下操作,我可以在视图中获得我想要的值

<%= (@result.end_time.minus_with_coercion(@result.start_time)).round %>

但是现在我需要在控制器中创建@result时使用此值填充:total_time - 我尝试了以下内容:

def finish 
  @a_hill = AHill.find(params[:hill_id])
  @finish_time = Result.create(:user_id => params[:user_id], :a_hill_id => params[:hill_id], :start_time =>@a_hill.start_time, :end_time=>Time.now, :total_time=>(Time.now.minus_with_coercion(@a_hill.start_time)).round)
  if @finish_time.save
    redirect_to(:action => "race", :id =>params[:hill_id] , :hill_id =>params[:hill_id])
  end
end

或关注其主要部分:

:total_time=>(Time.now.minus_with_coercion(@a_hill.start_time)).round

但我得到了错误

“AHillsController中的TypeError#finish - 无法将String转换为确切的数字”

:total_time是一个整数:start_time和:end_time是日期时间

我对Rails很陌生,很抱歉,如果答案是非常明显的,并提前感谢。

1 个答案:

答案 0 :(得分:1)

你需要的是将@a_hill的start_time转换为Datetime对象try @a_hill.start_time.to_datetime 甚至可以更好地更改AHill对象,使其具有start_time属性中的datetime对象。