我如何格式化时间字符串?

时间:2012-01-12 19:08:02

标签: ruby-on-rails ruby

这是我收到的字符串:00:03:30.877615

这是小时,分钟和秒。

我想要做的是将相同的字符串格式化为:3:30

我基本上想要分钟(没有前导零)和整秒。

字符串大部分都是相同的,但小数位的长度可能会改变。

3 个答案:

答案 0 :(得分:2)

“ - ”在分钟内取出前导零。

>> require 'time'
=> []
>> t = Time.parse('00:03:30.877615')
=> 2012-01-12 00:03:30 -0800
>> t.strftime("%-m:%S")
=> "1:30"

答案 1 :(得分:1)

你有几个选择。如果你知道你的起始字符串总是具有相同的长度/结构,你可以做一个简单的字符串变换:

start_time = '00:03:30.877615'
mins_and_secs = start_time[3..7]
mins_and_secs = mins_and_secs[1..-1] if mins_and_secs[0] == '0'

这将是最快的选择。如果您期望更多变体,则可以实际创建Time object,然后使用#strftime

答案 2 :(得分:0)

你能依靠那种时间格式吗?如果是这样,我可能只是使用正则表达式并拉出我想要的位:

reg = /\d\d:(\d\d):(\d\d).*/
if m = reg.match(s)
  "#{ m[1].to_i }:#{ m[2] }"
end