如何将两个零00作为整数打印?

时间:2014-12-10 05:25:05

标签: ruby string

我正在研究一些应用学院的练习题,我似乎无法打印两个00来进行时间转换。这是我到目前为止所做的:

def time_conversion(minutes)
  hours = minutes/60            
  if minutes%60 < 10
    minutes = minutes%60
  elsif minutes%60 > 10
    minutes = minutes%60
  elsif minutes%60 == 0
    minutes = 00
  end        

  return "#{hours}:#{minutes}"
end

time_conversion(360)

4 个答案:

答案 0 :(得分:6)

您可以使用sprintf

sprintf("%02d:%02d", hours, minutes)

或等效的String#%

"%02d:%02d" % [hours, minutes]

答案 1 :(得分:1)

您的代码的一个非常简单的重构可能是函数def中的一行 -

return "#{m/60}:#{m%60 == 0 ? '00' : m%60}"

从irb -

执行示例
2.1.5 :077 > m=100
 => 100 
2.1.5 :078 > puts "#{m/60}:#{m%60 == 0 ? '00' : m%60}"
1:40
 => nil 
2.1.5 :079 > m=120
 => 120 
2.1.5 :080 > puts "#{m/60}:#{m%60 == 0 ? '00' : m%60}"
2:00
 => nil 
2.1.5 :081 >

答案 2 :(得分:0)

time_conversion的最后一句话替换为return "%02d:%02d" % [ hours, minutes ]

查看文档http://ruby-doc.org/core-2.1.5/String.html#method-i-25了解更多详情

答案 3 :(得分:0)

方法Fixnum#divmod在这里很有用:

def time_conversion(minutes)
  "%d hours: %02d minutes" % minutes.divmod(60)
end      

time_conversion(360)
  #=> "6 hours: 00 minutes"