Ruby hỗ trợ số học ngày tháng trong các lớp Date và DateTime , là một phần của thư viện chuẩn của Ruby. Cả hai lớp đó đều hiển thị các phương thức # + và # - , các phương thức này cộng và trừ các ngày từ một ngày hoặc một thời gian.
$ irb
> require 'date'
=> true
> (DateTime.new(2015,4,1) - 90).to_s # Apr 1, 2015 - 90 days
=> "2015-01-01T00:00:00+00:00"
> (DateTime.new(2015,4,1) - 1).to_s # Apr 1, 2015 - 1 day
=> "2015-03-31T00:00:00+00:00"
Sử dụng các phương pháp # << và # >> để hoạt động theo tháng thay vì ngày. Số học theo tháng hơi khác một chút so với số học theo ngày. Sử dụng Date thay vì DateTime làm cho hiệu quả rõ ràng hơn.
> (Date.new(2015, 5, 31) << 3).to_s # May 31 - 3 months; 92 days diff
=> "2015-02-28"
Theo ví dụ về joda-time của bạn, bạn có thể viết một cái gì đó như thế này trong Ruby.
now = DateTime.now
ninety_days_ago = now - 90
hoặc có thể chỉ
ninety_days_ago = DateTime.now - 90