# Two Date classes?

**URL:** <https://www.ruby-forum.com/t/two-date-classes/97787>\
**Category:** Ruby\
**Created:** [July 10, 2006, 4:32pm UTC](https://www.ruby-forum.com/t/two-date-classes/97787 "2006-07-10T16:32:43Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![markcasio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e9bcb4/32.png) [@markcasio](https://www.ruby-forum.com/u/markcasio)\
**Post date:** [July 10, 2006, 4:32pm UTC](https://www.ruby-forum.com/t/two-date-classes/97787/1 "2006-07-10T16:32:43Z")

</div>

It seems that there is a Date class in the core library and the  
standard library. Is this correct? The following code

* * *

core = Date.methods.sort

require ‘date’  
std = Date.methods.sort

puts “methods in std Date that aren’t in core Date”  
puts std - core

* * *

outputs lots of method names.

Pickaxe doesn’t document a Date class in the core libraries.  
Does anybody know why there are two classes named Date in the standard  
Ruby distribution?

---

<div class="post-metadata">

**Author:** ![markcasio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e9bcb4/32.png) [@markcasio](https://www.ruby-forum.com/u/markcasio)\
**Post date:** [July 10, 2006, 8:01pm UTC](https://www.ruby-forum.com/t/two-date-classes/97787/2 "2006-07-10T20:01:30Z")

</div>

Simple exercise on my machine …

$ ruby -v  
ruby 1.8.4 (2005-12-24) [powerpc-linux]

$ ruby -e ‘puts Date.methods(false).sort’  
-e:1: uninitialized constant Date (NameError)

$ ruby -r date -e ‘Date.methods(false).sort’  
\_load  
\_parse  
\_strptime  
ajd\_to\_amjd  
ajd\_to\_jd  
amjd\_to\_ajd

What version of ruby are you running?  
Might you have included Date in an .irbrc file or some other piece of  
code?

Blessings,  
Tim P.

---

<div class="post-metadata">

**Author:** ![markcasio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e9bcb4/32.png) [@markcasio](https://www.ruby-forum.com/u/markcasio)\
**Post date:** [July 10, 2006, 10:16pm UTC](https://www.ruby-forum.com/t/two-date-classes/97787/3 "2006-07-10T22:16:12Z")

</div>

On Jul 10, 2006, at 10:31 AM, Mark V. wrote:

> puts “methods in std Date that aren’t in core Date”  
> puts std - core
> 
> * * *
> 
> outputs lots of method names.
> 
> Pickaxe doesn’t document a Date class in the core libraries.  
> Does anybody know why there are two classes named Date in the standard  
> Ruby distribution?

There aren’t. If you have rubygems in your RUBYOPT (or similiar) it  
pulls in time.rb which adds some methods to the Date class (and  
changes it’s behavior slightly). This could be what you are seeing.

---

<div class="post-metadata">

**Author:** ![markcasio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e9bcb4/32.png) [@markcasio](https://www.ruby-forum.com/u/markcasio)\
**Post date:** [July 10, 2006, 11:50pm UTC](https://www.ruby-forum.com/t/two-date-classes/97787/4 "2006-07-10T23:50:36Z")

</div>

On 7/10/06, Tim P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Simple exercise on my machine …
> 
> $ ruby -v  
> ruby 1.8.4 (2005-12-24) [powerpc-linux]

I’m running  
ruby 1.8.4 (2005-12-24) [i386-mswin32]

> What version of ruby are you running?  
> Might you have included Date in an .irbrc file or some other piece of code?

I have the RUBYOPT environment variable set to rubygems. Quite  
possible that does a require on the Date class. However, even if it  
does, why do I get extra methods after I do a “require ‘date’”\>

---

<div class="post-metadata">

**Author:** ![markcasio](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/e9bcb4/32.png) [@markcasio](https://www.ruby-forum.com/u/markcasio)\
**Post date:** [July 10, 2006, 11:50pm UTC](https://www.ruby-forum.com/t/two-date-classes/97787/5 "2006-07-10T23:50:45Z")

</div>

Ignore my last reply. Logan answered my question. Thanks!
