Ruby admite aritmética de fechas en las clases Date y DateTime , que forman parte de la biblioteca estándar de Ruby. Ambas clases exponen los métodos # + y # - , que suman y restan días de una fecha o una hora.
$ irb
> require 'date'
=> true
> (DateTime.new(2015,4,1) - 90).to_s
=> "2015-01-01T00:00:00+00:00"
> (DateTime.new(2015,4,1) - 1).to_s
=> "2015-03-31T00:00:00+00:00"
Utilice los métodos # << y # >> para operar en meses en lugar de días. La aritmética en meses es un poco diferente a la aritmética en días. Usar Date en lugar de DateTime hace que el efecto sea más obvio.
> (Date.new(2015, 5, 31) << 3).to_s
=> "2015-02-28"
Siguiendo tu ejemplo de joda-time, podrías escribir algo como esto en Ruby.
now = DateTime.now
ninety_days_ago = now - 90
o tal vez solo
ninety_days_ago = DateTime.now - 90
Date
también permite fracciones para que usted pueda hacerloDate.today - (90.0/24.0)
. El resultado se puede convertir fácilmenteto_datetime
oto_time
también.