我是ruby新手。我正试图计算给定时间段的秒数。我有一个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
以下是Ruby代码
时间以来。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]
你很接近了,这段代码做到了:
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
方法将string转换为Time
实例。它理解时间字符串的一些格式,但不是所有格式,因此您可能想要验证输入。
你可以试试
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设置为正数
试试这个
end_time=Time.strptime('19:32:12',"%H:%M:%S")
start_time=Time.strptime('15:00:12',"%H:%M:%S")
end_time-start_time