how to convert 270921sec into days + hours + minutes + sec ? (ruby)

前端 未结 9 438
不知归路
不知归路 2020-12-02 06:09

I have a number of seconds. Let\'s say 270921. How can I display that number saying it is xx days, yy hours, zz minutes, ww seconds?

9条回答
  •  有刺的猬
    2020-12-02 06:18

    It can be done pretty concisely using divmod:

    t = 270921
    mm, ss = t.divmod(60)            #=> [4515, 21]
    hh, mm = mm.divmod(60)           #=> [75, 15]
    dd, hh = hh.divmod(24)           #=> [3, 3]
    puts "%d days, %d hours, %d minutes and %d seconds" % [dd, hh, mm, ss]
    #=> 3 days, 3 hours, 15 minutes and 21 seconds
    

    You could probably DRY it further by getting creative with collect, or maybe inject, but when the core logic is three lines it may be overkill.

提交回复
热议问题