Преобразование времени в секунды, вычисление промежутка в секундах, вычисление разницы между желаемым временем и первым временем в секундах, вычисление доли всего промежутка, а затем умножение на 100%?
Пример:
12 AM = 0 секунд (дня)
12 PM = 43200 секунд (дня)
Ваше желаемое время = 3 часа утра = 10800 секунд дня
Общий промежуток времени = 43200 - 0 = 43200 секунд
Разница во времени желаемого времени с первого раза = 10800 - 0 = 10800 секунд
Фракция = 10800/43200 = 0,25
Процент = 0,25 * 100% = 25%
(Извините, не знаю Руби, но есть идея.)