42

指定された日付で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)
4

7 に答える 7

50

日付のドキュメントによると:

require 'date'

Date.new(2001,2,25)           #=> #<Date: 2001-02-25 
Date.jd(2451966)             #=> #<Date: 2001-02-25 
Date.ordinal(2001,56)        #=> #<Date: 2001-02-25 
Date.commercial(2001,8,7)    #=> #<Date: 2001-02-25 
Date.parse('2001-02-25')     #=> #<Date: 2001-02-25 
Date.strptime('25-02-2001', '%d-%m-%Y') #=> #<Date: 2001-02-25 
Time.new(2001,2,25).to_date   #=> #<Date: 2001-02-25 
于 2012-09-22T14:30:53.717 に答える
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 > 
于 2012-09-22T14:28:35.400 に答える
3

私は以下を覚えるよりも簡単だと思いますDate.new

require 'active_support/core_ext/string'
'2019-03-31'.to_date
=> #<Date: 2019-03-21 ((2458564j,0s,0n),+0s,2299161j)>

https://apidock.com/rails/String/to_dateを参照してください

于 2019-03-06T21:12:43.707 に答える
1

Railsの外部でDateのactive_support拡張機能を取得しようとしている場合は、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

于 2012-09-22T14:36:27.070 に答える
0
Date.strptime("2012-09-21 19:45:48","%Y-%m-%d %H:%M:%S")
于 2012-09-22T14:30:51.497 に答える
0

Ruby標準ライブラリの日付拡張子を使用する必要があります。ドキュメントのほとんどの例は、必ずしもそれを要求することを示しているわけではありません。

require 'date'

必要なものでした。組み込みのクラスまたはモジュールのセットではありません。

その追加で2つのクラスを取得します。

Date
DateTime

これで、ドキュメントにある情報を使用できるようになりました

于 2017-01-09T17:44:21.280 に答える
0
require 'date'
Date::strptime("29-05-2017", "%d-%m-%Y")

したがって、この日付モジュールをコードに含めてから、メソッドstrptimeを使用する必要があります。このメソッド内では、年に気付く場合があります。strptimeメソッドの最初のパラメーターとして通年が入力されるため、大文字のYを使用しました。日付が「29-05-17」のような場合は、小さいyを使用できます。

于 2017-05-29T06:31:54.000 に答える