# Day number delta

**URL:** <https://www.ruby-forum.com/t/day-number-delta/58967>\
**Category:** Ruby\
**Created:** [April 27, 2006, 2:29pm UTC](https://www.ruby-forum.com/t/day-number-delta/58967 "2006-04-27T14:29:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lindsay\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecae2f/32.png) [@Lindsay\_B](https://www.ruby-forum.com/u/Lindsay_B)\
**Post date:** [April 27, 2006, 2:29pm UTC](https://www.ruby-forum.com/t/day-number-delta/58967/1 "2006-04-27T14:29:51Z")

</div>

How can I calculate the number of days between two Date objects?. This  
is easy enough with Time objects using the epoch seconds method tv\_sec.  
Is there something similar for Dates?

thanks  
Lindsay

---

<div class="post-metadata">

**Author:** ![Lindsay\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecae2f/32.png) [@Lindsay\_B](https://www.ruby-forum.com/u/Lindsay_B)\
**Post date:** [April 27, 2006, 2:53pm UTC](https://www.ruby-forum.com/t/day-number-delta/58967/2 "2006-04-27T14:53:45Z")

</div>

Searching the web, I’ve seen this suggested:

(Date.parse(date2.to\_s) - Date.parse(date1.to\_s)).to\_i

but this strikes me as plain ugly! Surely there is a much better  
solution…

Lindsay

---

<div class="post-metadata">

**Author:** ![Lindsay\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecae2f/32.png) [@Lindsay\_B](https://www.ruby-forum.com/u/Lindsay_B)\
**Post date:** [April 27, 2006, 3:22pm UTC](https://www.ruby-forum.com/t/day-number-delta/58967/3 "2006-04-27T15:22:05Z")

</div>

On Thursday 27 April 2006 6:30 am, Lindsay B. wrote:

> How can I calculate the number of days between two Date objects?. This  
> is easy enough with Time objects using the epoch seconds method tv\_sec.  
> Is there something similar for Dates?

delta = a - b

Just subtract one from the other.

irb(main):001:0\> require ‘date’  
=\> true  
irb(main):002:0\> a = Date.new(2006,4,28)  
=\> #\<Date: 4907707/2,0,2299161\>  
irb(main):003:0\> b = Date.new(2005,3,17)  
=\> #\<Date: 4906893/2,0,2299161\>  
irb(main):004:0\> c = a - b  
=\> Rational(407, 1)  
irb(main):005:0\> c.to\_i  
=\> 407

Kirk H.

---

<div class="post-metadata">

**Author:** ![Lindsay\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/ecae2f/32.png) [@Lindsay\_B](https://www.ruby-forum.com/u/Lindsay_B)\
**Post date:** [April 27, 2006, 3:31pm UTC](https://www.ruby-forum.com/t/day-number-delta/58967/4 "2006-04-27T15:31:16Z")

</div>

You might want to require mathn as well:

require ‘date’  
require ‘mathn’

Date.new(2006,4,28) - Date.new(2005,3,17)  
#=\> 407

Ciao,  
Stefano
