我正在使用Ruby 2.2.3中的time_difference gem,它运行得很好但是虽然它可以告诉我两次之间的区别,但它无法告诉我这种差异是正还是负。
irb(main):001:0> require 'time_difference'
=> true
irb(main):002:0> t1 = "11:30"
=> "11:30"
irb(main):003:0> t2 = "11:20"
=> "11:20"
irb(main):004:0> TimeDifference.between(t1, t2).in_minutes
=> 10.0
任何人都可以帮助我得到我想要的结果(在这种情况下-10分钟)这个原因我必须比较两次以"HH:MM"
的形式发送,这样我才能知道早期或晚期是怎样的分钟所以需要知道它的+或 - 。
以答案更新:
通过@Jesus's回答,我得到了正确的输出。然后我需要能够处理跨越午夜的时间,所以这就是我最终得到的代码;
def convert_to_minutes(seconds)
(seconds / 60).round
end
def time_keeper(actual_time, planned_time, ssd)
today = Time.now.strftime("%Y-%m-%d")
tt_time = "#{ssd} #{planned_time}"
real_time = "#{today} #{actual_time}"
t1 = Time.parse(tt_time)
t2 = Time.parse(real_time)
time_output = convert_to_minutes(t2 - t1)
end
答案 0 :(得分:2)
使用时间Time
类是一个选项吗?如果是这可能是一个可能的解决方案:
require 'time'
def convert_to_minutes(seconds)
(seconds / 60).round
end
t1 = Time.parse("11:30")
t2 = Time.parse("11:20")
difference = convert_to_minutes(t2 - t1)
答案 1 :(得分:-2)
x = TimeDifference.between(t1, t2).in_minutes
if t1 > t2
x = x * -1
end