2014-10-03 3 views
-3

У меня есть объект Time, который содержит минуты и секунды, такие как «05:37». Мне нравится знать, как преобразовать это в следующий formate: «5m 37s».Изменение формы времени в рельсах

+0

Я не знаю, рубин-на-рельсы, но вы должны использовать регулярные выражения для этого. – Jerodev

+4

['DateTime # strftime'] (http://apidock.com/ruby/DateTime/strftime) –

ответ

-2

Nevermind получил его:

[(total_response_time.to_i/counter_for_response_time.to_i)/60 % 60, (total_response_time.to_i/counter_for_response_time.to_i) % 60].map { |t| t.to_s.rjust(2,'0') }.join('m ') 

Для тех, кто хочет, чтобы преобразовать его, как это в будущем.

+1

Это не то же самое, что в вашем вопросе. Что такое total_response_time, counter_response_time? – tomsoft

+0

и гораздо более чистый способ его достижения: (total_response_time.to_i/counter_for_response_time.to_i) .tap {| t | s = "# {t/60} m # {t% 60} s"} puts s – tomsoft

+2

Это не похоже на хороший способ сделать что-либо **, это выглядит очень запутанным и сложным. Если у вас есть объект Time, тогда просто используйте strftime на нем, как говорили люди. –

0

Если мы говорим объекта во времени, это легко:

t=Time.now 
puts "#{t.min}m #{t.sec}s" 
=>15m 28s 

Если у вас есть строка

s="05:37" 
t=s.split(':').map{|i| i.to_i} 
puts "#{t.first}m #{t.last}s" 
=>5m 37s 

Или короче

s.split(':').map{|i| i.to_i}.join("m ")+"s" 
0

Хотя я согласен с в комментарии, предлагающем strftime, вы также можете просто использовать gsub:

"05:37".gsub(/(\d+):(\d+)/, '\1m \2s') 
#=> "05m 37s" 

Если вы не хотите, чтобы начальный ноль был достаточно прост, чтобы избавиться от него.

0
[your_time_object].strftime('%Mm %Ss'). 

Для более подробно попробовать this

Смежные вопросы