ruby中的时间操作



我是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

相关内容

  • 没有找到相关文章

最新更新