Ruby 日期时间减法

Ruby Date Time Subtraction

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

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

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

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

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

希望对您有所帮助

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#strptime and DateTime#(后者用于格式指令)。只要知道日期和时间格式,我总是更喜欢 strptime 而不是 parse。以下是原因的示例:

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