Subtract n hours from a DateTime in Ruby

后端 未结 11 1347
别那么骄傲
别那么骄傲 2020-12-14 06:02

I have a Ruby DateTime which gets filled from a form. Additionally I have n hours from the form as well. I\'d like to subtract those n hours from the previous DateTime. (To

11条回答
  •  长情又很酷
    2020-12-14 06:57

    n/24.0 trick won't work properly as floats are eventually rounded:

    >> DateTime.parse('2009-06-04 02:00:00').step(DateTime.parse('2009-06-04 05:00:00'),1.0/24){|d| puts d}
    2009-06-04T02:00:00+00:00
    2009-06-04T03:00:00+00:00
    2009-06-04T03:59:59+00:00
    2009-06-04T04:59:59+00:00
    

    You can, however, use Rational class instead:

    >> DateTime.parse('2009-06-04 02:00:00').step(DateTime.parse('2009-06-04 05:00:00'),Rational(1,24)){|d| puts d}
    2009-06-04T02:00:00+00:00
    2009-06-04T03:00:00+00:00
    2009-06-04T04:00:00+00:00
    2009-06-04T05:00:00+00:00
    

提交回复
热议问题