Ruby中的时间转换?

Ruby中的时间转换?,ruby,string,methods,Ruby,String,Methods,我有这个代码将分钟转换成“小时:分钟”格式 但是当我希望它是“6:00”时,我的输出是“6:0”。如何清理(简化)这段代码并完成我要做的工作?使用格式化输出: sprintf('%d:%02d', time_hours, time_minutes) 或同等标准: '%d:%02d' % [time_hours, time_minutes] 或者你甚至可以把它做成一行: def time_conversion(mins) sprintf('%d:%02d', *mins.divmod(6

我有这个代码将分钟转换成“小时:分钟”格式

但是当我希望它是“6:00”时,我的输出是“6:0”。如何清理(简化)这段代码并完成我要做的工作?

使用格式化输出:

sprintf('%d:%02d', time_hours, time_minutes)
或同等标准:

'%d:%02d' % [time_hours, time_minutes]
或者你甚至可以把它做成一行:

def time_conversion(mins)
   sprintf('%d:%02d', *mins.divmod(60))
end

同时返回整数除法的结果和模运算符的结果<代码>'%d'表示在此处插入一个整数<代码>'%02d'表示插入一个整数并显示至少两位数字,必要时用0填充。你也可以用它做更多的事情。

我正在努力理解这部分:'%d:%02d'。您能更深入地了解这一点吗?@Shawn。您能解释一下为什么在一行程序中使用splat吗?@Shawn
sprintf
的第一个参数是字符串,然后它的其余参数是要替换为字符串的值列表
divmod
返回一个包含两个值的数组。
*
使数组的元素被使用,就好像它们被直接传递给方法一样。虽然我不知道这方面的技术术语…@Shawn请参阅本文的“调用方法”部分:我同意,但是每种方法的标题都非常不同。根据用户对此问题的搜索,可能会出现一个或另一个问题。
def time_conversion(mins)
   hours, minutes = mins.divmod(60)
   sprintf('%d:%02d', hours, minutes)
end
def time_conversion(mins)
   sprintf('%d:%02d', *mins.divmod(60))
end