Lev Lukomsky'nin ActiveSupport :: Süre'den yararlanan ve milisaniyeleri işleyen sorusundan ilham alan bir cevap (kodu karşılaştırmak için kullanışlıdır)
# duration in ms modulus number of ms in one second
milliseconds = duration.in_milliseconds % 1.second.in_milliseconds
# duration in seconds modulus number of seconds in one minute
seconds = (duration / 1.second) % (1.minute / 1.second)
# duration in minutes modulus number of minutes in one hour
minutes = (duration / 1.minute) % (1.hour / 1.minute)
# duration in hours modulus number of hours in one day
hours = (duration / 1.hour) % (1.day / 1.hour)
format("%02d:%02d:%02d:%03d", hours, minutes, seconds, milliseconds) #=> "12:05:00:001"
Elbette bunu ilgili ActiveSupport yöntemlerini kullanarak ve aynı yapıyı tekrarlayarak günler, aylar, yıllar vb. İle kolayca uzatabilirsiniz.
Çok uzun süreler için, 1 aylık süre gün sayısı olarak sabit olmadığından bunun yanlış olabileceğini ve AS: Duration bununla nasıl ilgilendiğinden emin değilim.