喂!我想将“123456”转换为“00:20:34.56”,其中小数点右边的两位数字是百分之一秒。所以00:00:00.99 + 00:00:00.01 = 00:00:01.00
我拥有的: def to_hmsc(分) h =(分/ 360000)。楼 分 - = h * 360000 m =(分/ 6000)。楼 分 - = m * 6000 s =(分/ 100)。地板 分 - = s * 100
“#{H}:{#}米:#{S}#{S}” 端
这样做: to_hmsc(“123456”)#=> “0:20:34.56”
问题1:我的意思是,这是红宝石,我觉得这个部分'分 - = ......'相当笨重。你能看到任何缩短整个过程的方法吗?
问题2:之前已经被问了一百万次,但是请分享你得到的任何东西:将数字前导零加零的最短方法是什么。以便 to_hmsc(“123456”)#=> “00:20:34.56”
谢谢!
答案 0 :(得分:2)
Time.at(123456/100.0).strftime('%H:%M:%S.%2N')
#=> "01:20:34.56"
顺便说一下,你应该小心Ruby中的数据类型,因为它是强类型语言。你不能将一个字符串传递给一个方法,并希望它能与它一起工作,因为它是一个数字。
零填充可以通过多种方式完成。通常,在格式化字符串时执行:
"%04d" % 12
#=> "0012"
查看sprintf文档以获取完整参考。
PS。似乎%2N
在Ruby< = 1.8.7中不起作用。所以这是丑陋的版本:
t=Time.at(123456/100.0)
'%02d:%02d:%02d.%02d' % [t.hour, t.min, t.sec, t.usec/10000]
#=> "01:20:34.56"