Как мне добавить / вычесть / и т. д. значения времени в Ruby? Например, как мне добавить следующие времена?
00:00:59 + 00:01:43 + 00:20:15 =?





Это некрасиво, но вы можете использовать DateTime.parse (each_interval) и вычислить количество секунд в каждом. Как это:
require 'date'
def calc_seconds(time_string)
date_time = DateTime.parse(time_string)
hour_part = date_time.hour * 60 * 60
minute_part = date_time.minute * 60
second_part = date_time.second
hour_part + minute_part + second_part
end
... который дает вам результат за секунды, при условии, что введены правильные данные. На этом этапе вы можете сложить их вместе.
Вы можете отменить процесс, чтобы получить интервал в исходной записи.
Я действительно думаю, что должен быть более простой метод, но я не знаю ни одного.
Один из способов - преобразовать все в секунды, а затем выполнить операции ... Затем вам нужно будет снова преобразовать его в объект времени с
Time.at(seconds_result).strftime('%H:%M:%S')
И вы получите время, красиво отформатированное (в виде строки).
Я пытаюсь найти драгоценный камень, который выполняет эту и другие операции.
Вероятно, вы захотите использовать драгоценный камень, который не имеет отношения к текущему дню. Вы можете выполнять акробатические трюки, используя DateTime и / или Time, но вы постоянно будете бороться за то, как управлять днями.
Один драгоценный камень, который может быть полезен, - это tod (TimeOfDay), https://github.com/JackC/tod.
При этом вы можете напрямую выполнить TimeOfDay.parse «00:01:43», добавить значения и распечатать результат с помощью strftime («% H:% M:% S»).
Используйте ActiveSupport, в котором есть множество встроенных расширений дат.
require 'active_support/core_ext'
t1 = "#{Date.today} 00:00:59".to_time
t2 = "#{Date.today} 00:01:43".to_time
t3 = "#{Date.today} 00:20:15".to_time
t1.since(t2.seconds_since_midnight+t3.seconds_since_midnight)
или, если вас не интересует дата, только время:
t1.since(t2.seconds_since_midnight+t3.seconds_since_midnight).strftime("%H:%M:%S")
Чтобы увидеть полный список, посетите http://guides.rubyonrails.org/active_support_core_extensions.html#extensions-to-date.