Ruby日期时间减法

时间:2018-07-13 06:43:38

标签: ruby ruby-on-rails-3 time duration

我正在尝试从某个日志文件结果中计算出一个进程所花费的确切时间。解析日志后,我进入了以下阶段:

my_array = ["Some_xyz_process", "Start", "2018-07-12", "12:59:53,397", "End", "2018-07-12", "12:59:55,913"]

如何从结束日期和时间中减去开始日期和时间,以检索该过程所花费的确切时间?

2 个答案:

答案 0 :(得分:1)

您可以合并日期和时间字段,并使用Time.parse将其转换为时间对象,然后计算秒数差异

Time.parse('2018-07-12 12:59:55,397').to_i - Time.parse('2018-07-12 12:59:53,913').to_i

希望这会有所帮助

答案 1 :(得分:1)

my_array = ["Some_xyz_process",
            "Start", "2018-07-12", "12:59:53,397",
            "End", "2018-07-12", "12:59:55,913"]

require 'date'

fmt = '%Y-%m-%d%H:%M:%S,%L'
is = my_array.index('Start')
  #=> 1
ie = my_array.index('End') 
  #=> 4
DateTime.strptime(my_array[ie+1] + my_array[ie+2], fmt).to_time -
DateTime.strptime(my_array[is+1] + my_array[is+2], fmt).to_time
  #=> 2.516 (seconds)

请参见DateTime#strptimeDateTime#(后面的格式指令)。只要知道日期和时间格式,我总是更喜欢strptimeparse。以下是原因的示例:

DateTime.parse 'Theresa May has had a bad week over Brexit'
  #=> #<DateTime: 2018-05-01T00:00:00+00:00 ((2458240j,0s,0n),+0s,2299161j)>`.