如何在Ruby中创建新的Date实例

Mic*_*ant 31 ruby datetime ruby-on-rails date activesupport

如何在给定日期的IRB中创建新的Date对象.以下不起作用.

1.9.3p194 :053 > require 'active_support'
 => true 
1.9.3p194 :054 > Date.new
 => #<Date:0x9d80730> 
1.9.3p194 :055 > Date.parse('12/01/2012')
NoMethodError: undefined method `parse' for Date:Class
        from (irb):55

1.9.3p194 :055 > Date.new('12/01/2012')
ArgumentError: wrong number of arguments(1 for 0)
Run Code Online (Sandbox Code Playgroud)

Séb*_*nec 38

根据日期文件:

require 'date'

Date.new(2001,2,3)           #=> #<Date: 2001-02-03 ...>
Date.jd(2451944)             #=> #<Date: 2001-02-03 ...>
Date.ordinal(2001,34)        #=> #<Date: 2001-02-03 ...>
Date.commercial(2001,5,6)    #=> #<Date: 2001-02-03 ...>
Date.parse('2001-02-03')     #=> #<Date: 2001-02-03 ...>
Date.strptime('03-02-2001', '%d-%m-%Y')
                             #=> #<Date: 2001-02-03 ...>
Time.new(2001,2,3).to_date   #=> #<Date: 2001-02-03 ...>
Run Code Online (Sandbox Code Playgroud)

  • 对于那些怀疑参数的隐含顺序是否受到美国或世界其他国家日期排序的启发的人来说,参数的排序是一个逻辑和中立的```Date.new(年,月,日)``` . (8认同)
  • 如果简单地把它作为'Date.new(2001,2,25)`那么会更容易猜到 (7认同)
  • 根据建议从“02-03”更新为“02-25”:) (3认同)

Hou*_*uen 5

1.9.3-p125 :012 > require 'date'
 => true 
1.9.3-p125 :013 > Date::new(2012,02,03)
 => #<Date: 2012-02-03 ((2455961j,0s,0n),+0s,2299161j)> 
1.9.3-p125 :014 > 
Run Code Online (Sandbox Code Playgroud)