Вы можете использовать Time::parse
или Time::strptime
в стандартной библиотеке Time для анализа строки.
require 'time'
string = "07:18.713"
time = Time.strptime(string, '%R')
#=> 2019-10-24 07:18:00 +0200
Когда вы делаете это для несколькихраз вы можете захотеть передать ему аргумент "сейчас". Представьте, что код выполняется незадолго до полуночи, а затем во время итерации день переходит вперед, изменяя аргумент «сейчас» для оставшейся части цикла:
hash = {"Name"=>"Jhon doe", "Stage 1"=>"07:18.713", "Stage 2"=>"07:31.602", "Stage 3"=>"07:37.464", "Stage 4"=>"09:58.272", "Stage 5"=>"06:47.872", "Stage 6"=>"07:35.579"}
now = Time.now # Save the current time in a variable so all parsing uses
# the same now time.
stage_times = hash.slice(*'Stage 1'..'Stage 6')
stage_times.transform_values! { |time| Time.strptime(time, '%R', now) }
result = hash.merge(stage_times)
#=> {"Name"=>"Jhon doe", "Stage 1"=>2019-10-24 07:18:00 +0200, "Stage 2"=>2019-10-24 07:31:00 +0200, "Stage 3"=>2019-10-24 07:37:00 +0200, "Stage 4"=>2019-10-24 09:58:00 +0200, "Stage 5"=>2019-10-24 06:47:00 +0200, "Stage 6"=>2019-10-24 07:35:00 +0200}