时间差

时间:2015-12-13 22:25:43

标签: ruby

我正在使用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

2 个答案:

答案 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