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

How do I eliminate leading zeroes from my time conversion function?

我正在使用 Rails 4.2.7。我有这个函数可以将以毫秒为单位的时间转换为可读的字符串

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

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

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

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

http://rubular.com/r/NbSnQE9wDu

说你有

time = "00:37:25"

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

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

那你可以运行sub!

str.sub!(regex, '') #=> 35:25
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"