我有一个以下格式的字符串:
"136:16:11.862504"
(hours:minutes:seconds:milliseconds)
每当我尝试使用Ruby的strptime来解析这个字符串时,它会抛出ArgumentError: invalid strptime format - '%H:%M:%S'
我实际上已经进行了相当广泛的搜索,并且无法找到一种优雅的方法来解析它(除了用字符串和句点分割字符串的相当笨重的解决方案,并且手动完成所有操作)。有没有办法做到这一点,我忽略了?
编辑:我不打算从中获取时间戳,我希望得到时间持续时间。
答案 0 :(得分:2)
您的预期产量是多少? '136'不是一个有效的小时,由于你没有日期部分,我们不能简单地将那些'额外'小时变成几天。如果您不关心日期部分,此解决方案可能适合您:
time = "136:16:11.862504"
hours, minutes, seconds = time.split(":").map(&:to_f)
hours %= 24
minutes %= 60
seconds %= 60
Time.new(0, 1, 1, hours, minutes, seconds, 0)
=> 0000-01-01 16:16:11 +0000
答案 1 :(得分:0)
如果没有任何内容阻止您使用Regexp
,则可以使用基于this答案的内容,例如:
/^(\d+):([0-5][0-9]):([0-5][0-9])\.\d+$/ =~ "136:16:11.862504"
puts "#{$1} : #{$2} : #{$3}"
136 : 16 : 11