ruby将百分之一秒转换为时间戳优化

时间:2010-03-29 22:51:13

标签: ruby

喂!我想将“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”

谢谢!

1 个答案:

答案 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"