Как перевести количество времени в секунды? - PullRequest
0 голосов
/ 13 января 2012

Скажем, кому-то понадобилось 3 минуты и 45 секунд, чтобы выполнить задачу.

Я бы обозначил это как 3: 45.

Но что мне нужно сделать, это предположить, что мне дали 3:45, преобразовать это в количество секунд, которое потребовалось.

Итак, когда мне дано 3:45, я хочу преобразовать это в 225.

Это должно работать с Ruby 1.8.7.

Ответы [ 5 ]

2 голосов
/ 13 января 2012

Вы можете использовать что-то вроде предложенного Дейвом, или, если вам нужно больше вещей, есть библиотека продолжительности , которая делает это.

Это будет выглядеть так:

001:0> ChronicDuration.parse("3:45")
225
1 голос
/ 14 января 2012
class String
  def to_secs
    split(':').reverse.zip([1, 60, 60*60]).inject(0) { |m, e| m += e[0].to_i * e[1]  }
  end
end

puts '3:45'.to_secs  # 225
puts '1:03:45'.to_secs  # 3825
1 голос
/ 13 января 2012
def time_to_seconds(str)

  time_in = []
  time_in = str.split(":").reverse
  asec = 0
  secs = [1, 60, 60*60, 60*60*24]

  time_in.size.times do {|i|
    asec += secs[i].to_i * time_in[i].to_i
  end
  sec
end
1 голос
/ 13 января 2012

Буду осторожен, изобретая колесо здесь.Хотя вы можете предполагать, что у вас будут только минуты и секунды, и что у вас всегда будет один и тот же формат, безопаснее иметь что-то более надежное.для разбора прошедшего времени.

0 голосов
/ 13 января 2012
pry(main)> a = "3:45".split(":")
=> ["3", "45"]
pry(main)> a[0].to_i*60 + a[1].to_i
=> 225

(Конечно, в методе.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...