我是红宝石的新手。我试图计算给定时期的秒数。我有HH:MM:SS格式的开始时间和结束时间。
我可以将变量声明为Time类的对象并执行计算吗? 例如:
start_time='15:00:12'
end_time='19:32:12'
a=Time.new(start_time)
b=Time.new(end_time)
duration_seconds=a-b
答案 0 :(得分:1)
你非常接近,这段代码就是这样:
start_time = '15:00:12'
end_time = '19:32:12'
a = Time.parse(start_time)
b = Time.parse(end_time)
duration_seconds = a - b
Time.parse
方法将字符串转换为Time
实例。它理解时间字符串可以具有的一些但不是所有格式,因此您可能想要验证输入。有关详细信息,请参阅Ruby docs。
答案 1 :(得分:1)
这是Ruby中的代码
由于Time.new需要年,月,日,小时,分钟,秒等参数 - 我使用了前3个参数的当前时间,以及OP对其余3个参数的字符串参数值
两次之间的区别 - 我使用to_i
方法返回Time
实例代表的Epoch的秒数
string_start_time ='15:00:12'
start_time_parts = string_start_time.split(":").collect{ |y| y.to_i }
start_time = Time.new(Time.now.year, Time.now.month, Time.now.day, start_time_parts[0], start_time_parts[1], start_time_parts[2])
p start_time
string_end_time='19:32:12'
end_time_parts = string_end_time.split(":").collect{ |y| y.to_i }
end_time = Time.new(Time.now.year, Time.now.month, Time.now.day, end_time_parts[0], end_time_parts[1], end_time_parts[2])
p end_time
p duration_seconds = end_time.to_i - start_time.to_i
注意:需要一些代码重构来提取函数以从HH创建时间:MM:SS,我有重复的代码
上述代码的输出将是
2015-07-14 15:00:12 +0530
2015-07-14 19:32:12 +0530
16320
[Finished in 0.1s]
答案 2 :(得分:1)
您可以尝试
require "time"
start_time='15:00:12'
end_time='19:32:12'
Time.new(2002,1,1,*end_time.split(":")) - Time.new(2002,1,1,*start_time.split(":"))
我认为你想在同一天知道时间。 我把END - START设为正值。
答案 3 :(得分:0)
试试这个
end_time=Time.strptime('19:32:12',"%H:%M:%S")
start_time=Time.strptime('15:00:12',"%H:%M:%S")
end_time-start_time