Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby将百分之一秒转换为时间戳优化_Ruby - Fatal编程技术网

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

ruby将百分之一秒转换为时间戳优化,ruby,Ruby,嘿!我想将“123456”转换为“00:20:34.56”,其中小数点右侧的两位数是百分之一秒。所以00:00:00.99+00:00:00.01=00:00:01.00 我所拥有的: def至_hmsc(分) h=(分/360000)。地板 分-=h*360000 m=(美分/6000)。地板 分-=m*6000 s=(美分/100)。地板 分-=s*100 “#{h}:#{m}:#{s}.#{s}” 结束 这是否: 致hmsc(“123456”)#=>“0:20:34.56” 问题1:我的意

嘿!我想将“123456”转换为“00:20:34.56”,其中小数点右侧的两位数是百分之一秒。所以00:00:00.99+00:00:00.01=00:00:01.00

我所拥有的: def至_hmsc(分) h=(分/360000)。地板 分-=h*360000 m=(美分/6000)。地板 分-=m*6000 s=(美分/100)。地板 分-=s*100

“#{h}:#{m}:#{s}.#{s}” 结束

这是否: 致hmsc(“123456”)#=>“0:20:34.56”

问题1:我的意思是,这是ruby,我发现‘cent-=…’部分相当笨重。你能找到缩短整个过程的方法吗

问题2:这已经被问过一百万次了,但是请分享你所得到的:什么是将前导零添加到数字的最短方法。以便 致hmsc(“123456”)#=>“00:20:34.56”

谢谢

Time.at(123456/100.0).strftime('%H:%M:%S.%2N')
#=> "01:20:34.56"
顺便说一句,在Ruby中应该小心使用数据类型,因为它是强类型语言。您不能将字符串传递给一个方法,并期望它使用它,因为它是一个数字

零填充可以通过多种方式完成。通常,在格式化字符串时执行此操作:

"%04d" % 12
#=> "0012"
查看文档以获取完整参考


另外,似乎
%2N
在Ruby中不起作用嘿,Mladen!你提到Ruby是一种强类型语言的那部分,你的意思是传递的“分”应该被处理?您是否在Time.at(123456/100.0).strftime(“%H:%M:%S.%2N”)中尝试了%2N并使其在Ruby>=1.9中工作?我这里没有安装1.9:(对,要么先把它作为一个数字,要么事先把它作为一个数字(我不知道你从哪里得到的)。是的,我在1.9.1中尝试了
%2N
,它工作了,然后我检查了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"