Подтвердить что ты не робот

Как создать новый экземпляр Date в Ruby

Как создать новый объект Date в IRB с заданной датой. Следующие действия не выполнялись.

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)
4b9b3361

Ответ 1

Согласно Документация по дате:

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 ...>

Ответ 2

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 > 

Ответ 3

Если вы пытаетесь получить расширения active_support для Date вне Rails, вам нужно будет использовать модуль core_ext:

require 'active_support/core_ext/date/calculations'
Date.parse('12/01/2012')
=> #<Date: 2012-01-12 ((2455939j,0s,0n),+0s,2299161j)>

Дополнительная информация в этом руководстве Rails: http://edgeguides.rubyonrails.org/active_support_core_extensions.html

Ответ 4

Date.strptime("2012-09-21 19:45:48","%Y-%m-%d %H:%M:%S")

Ответ 5

Вам нужно использовать расширение даты из стандартной библиотеки Ruby. Большинство примеров в документах не всегда показывают, что вы требуете.

require 'date'

это то, что вам нужно. Это не встроенный набор классов или модулей.

Вы получаете два Класса с этим добавлением,

Date
DateTime

И с этим вы можете теперь использовать информацию, найденную в docs

Ответ 6

require 'date'
Date::strptime("29-05-2017", "%d-%m-%Y")

Итак, вам нужно включить этот модуль даты в свой код, а затем использовать метод strptime, внутри которого вы можете заметить год, я использовал капитал Y, потому что полный год вводится в качестве первого параметра метода strptime. Вы можете использовать небольшой y, если дата похожа на '29 -05-17 '.