How to subtract two dates using Ruby and the Time library?

1

This is the code:

require 'time'
t  = Time.parse('2016-04-18') #data de ontém
t2 = Time.now #data atual
t3 = t2 - t # subtração das duas variáveis(datas) acima
puts Time.at(t3) #resultado da subtração

In this case the result should be a day and a few hours, but the program returns me that date: "1970-01-02 08:00:42 -0300". I do not know where I'm going wrong.

    
asked by anonymous 19.04.2016 / 16:08

1 answer

0
What happens is that by subtracting t - t2 , ruby will return a difference float, and when calling Time.at(t3) , it will convert that difference to a compatible date. Not exactly, to the past time.

What you should be looking for might be this:

require 'time'
tempo_atras  = Time.parse('2016-04-18')

agora = Time.now

dias = (     agora.day   -   tempo_atras.day  ).to_s
horas = (    agora.hour  -   tempo_atras.hour ).to_s
minutos = (  agora.min   -   tempo_atras.min  ).to_s
segundos = ( agora.sec   -   tempo_atras.sec  ).to_s
meses = (    agora.mon   -   tempo_atras.mon  ).to_s
anos = (     agora.year  -   tempo_atras.year ).to_s

puts *["dias: "+dias, "horas: "+horas, "minutos: "+minutos, "segundos: "+segundos, "meses: "+meses, "anos: "+anos]
    
23.04.2016 / 19:08