Как создать новый экземпляр 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)
Ответы
Ответ 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 '.