如何消除时间转换函数中的前导零?

时间:2016-10-04 19:52:41

标签: ruby time formatting leading-zero

我正在使用Rails 4.2.7。我有这个功能,用于将时间(以毫秒为单位)转换为可读字符串

  def time_formatted
    Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S")
  end

我的问题是,如果我的东西少于一个小时,则函数返回“00:37:25”或者如果我的东西少于10分钟,则函数返回“00:07:52”。如何从函数中消除前导零?

3 个答案:

答案 0 :(得分:1)

r = /
    \A      # match beginning of string
    (?:00:) # match string '00:' in a non-capture group
    *       # perform above non-capture group match zero or more times, greedily
    0?      # optionally match a zero
    \K      # discard all matches so far
    .+      # match rest of string
    /x      # free-spacing regex definition mode

"00:00:00"[r] #=> "0" 
"00:00:01"[r] #=> "1" 
"00:00:21"[r] #=> "21" 
"00:02:11"[r] #=> "2:11" 
"00:12:11"[r] #=> "12:11" 
"02:13:14"[r] #=> "2:13:14" 
"12:13:14"[r] #=> "12:13:14" 

答案 1 :(得分:0)

您可以使用正则表达式删除前导零

def time_formatted
    Time.at(time_in_ms/1000).utc.strftime("%H:%M:%S").sub(/^(0+:?)*/, '')
end

http://rubular.com/r/NbSnQE9wDu

答案 2 :(得分:0)

说你有

time = "00:37:25"

您可以使用正则表达式删除前导零

regex = /^(0*:?)*/

然后您可以运行sub!

str.sub!(regex, '') #=> 35:25