为什么Ruby的Date类会自动加载但是DateTime不是?

时间:2012-03-14 15:33:38

标签: ruby

使用IRB,为什么Date&时间类自动加载,但DateTime不是?我必须require 'date',这对我没有意义,因为我认为Date和DateTime都使用标准库'date'

ruby-1.9.2-p290 :001 > Date
 => Date
ruby-1.9.2-p290 :002 > Time
 => Time
ruby-1.9.2-p290 :003 > DateTime
NameError: uninitialized constant Object::DateTime
    from (irb):3
    from /Users/kamilski81/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
ruby-1.9.2-p290 :004 > require 'date'
 => true
ruby-1.9.2-p290 :005 > require 'date'
 => false
ruby-1.9.2-p290 :006 > DateTime
 => DateTime

3 个答案:

答案 0 :(得分:38)

在IRB中,包含以下行:require 'date'然后您就可以使用DateTime。

irb(main):000:0> DateTime.class
NameError: uninitialized constant DateTime
        from (irb):0
        from /path/to/ruby/irb:12:in '(main)'
irb(main):001:0> require 'date'
=> true
irb(main):002:0> DateTime.class
=> Class

答案 1 :(得分:4)

首次使用require 'date'进行初始化时为我工作。

答案 2 :(得分:2)

有点好奇,我试过了:

$ ruby -e 'puts DateTime.class'
-e:1:in `<main>': uninitialized constant Object::DateTime (NameError)
[~, kamilski81@mac]
$ ruby -e 'puts Date.class'
-e:1:in `<main>': uninitialized constant Object::Date (NameError)
$ ruby -e 'puts Time.class'
Class

因此,我认为这是一个自动加载'日期'的问题。