Ruby中的时间转换?
我有这个代码将分钟转换成“小时:分钟”格式 但是当我希望它是“6:00”时,我的输出是“6:0”。如何清理(简化)这段代码并完成我要做的工作?使用格式化输出: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
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