TL; DR: Мне нужно получить разницу между HH:MM:SS.ms
и HH:MM:SS.ms
как HH:MM:SS:ms
Что мне нужно:
Вот хитрый. Я пытаюсь вычислить разницу между двумя временными метками, например:
In: 00:00:10.520
Out: 00:00:23.720
Должен доставить:
Diff: 00:00:13.200
Я думал, что разберу время в реальные Time
объекты и воспользуюсь разницей там. Это прекрасно работает в предыдущем случае и возвращает 00:0:13.200
.
Что не работает:
Однако для некоторых это работает неправильно, поскольку Ruby использует usec
вместо msec
:
In: 00:2:22.760
Out: 00:2:31.520
Diff: 00:0:8.999760
Очевидно, что разница должна быть 00:00:8:760
, а не 00:00:8.999760
. Мне очень хочется просто tdiff.usec.to_s.gsub('999','')
……
Пока мой код:
Вот мой код (они анализируются из входных строк, таких как "0: 00: 10: 520").
tin_first, tin_second = ins.split(".")
tin_hours, tin_minutes, tin_seconds = tin_first.split(":")
tin_usec = tin_second * 1000
tin = Time.gm(0, 1, 1, tin_hours, tin_minutes, tin_seconds, tin_usec)
То же самое происходит для tout
. Тогда:
tdiff = Time.at(tout-tin)
Для вывода я использую:
"00:#{tdiff.min}:#{tdiff.sec}.#{tdiff.usec}"
Есть ли более быстрый способ сделать это? Помните, я просто хочу иметь разницу между двумя разами. Чего мне не хватает?
Я сейчас использую Ruby 1.9.3p6.