Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何编写时间转换函数来计算小数点后的位数?_Ruby On Rails_Ruby_Time_Format_Duration - Fatal编程技术网

Ruby on rails 如何编写时间转换函数来计算小数点后的位数?

Ruby on rails 如何编写时间转换函数来计算小数点后的位数?,ruby-on-rails,ruby,time,format,duration,Ruby On Rails,Ruby,Time,Format,Duration,我使用的是Rails 4.2.7。我有一个将字符串(表示持续时间)转换为毫秒的函数 def duration_in_milliseconds(input) if input input.split(':').map(&:to_i).inject(0) { |a, b| a * 60 + b } * 1000 else 0 end end 问题是,如果有十分之一秒(小数点后一位),上面的内容就不考虑了。所以传递这个参数“19:14.

我使用的是Rails 4.2.7。我有一个将字符串(表示持续时间)转换为毫秒的函数

  def duration_in_milliseconds(input)
    if input
      input.split(':').map(&:to_i).inject(0) { |a, b| a * 60 + b } * 1000
    else
      0
    end
  end

问题是,如果有十分之一秒(小数点后一位),上面的内容就不考虑了。所以传递这个参数“19:14.1”得到的结果与传递这个参数“19:14”得到的结果相同。如何对上述内容进行调整,使其占小数点后的持续时间部分?

只需在处理时将其转换为浮点值,而不是整数:

  def duration_in_milliseconds(input)
    if input
      input.split(':').map(&:to_f).inject(0) { |a, b| a * 60 + b } * 1000
    else
      0
    end
  end

duration_in_milliseconds('19:14')
#=> 1154000.0
duration_in_milliseconds('19:14.1')
#=> 1154100.0