web-dev-qa-db-ja.com

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)
33
Michael Durrant

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

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

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

1
rossta

セバスチャンルカロンネックの回答にコメントするのに十分な評判はありませんが、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 を参照してください

1
jethro
Date.strptime("2012-09-21 19:45:48","%Y-%m-%d %H:%M:%S")
0
saihgala
require 'date'
Date::strptime("29-05-2017", "%d-%m-%Y")

したがって、このdateモジュールをコードに含めて、メソッドstrptimeを使用する必要があります。 strptimeメソッドの最初のパラメータとして1年が入力されているため、資本[〜#〜] y [〜#〜]を使用しました。日付が「29-05-17」のような場合は、小さなyを使用できます。

0
coderGuy

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

require 'date'

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

その追加で2つのクラスを取得し、

Date
DateTime

これで docs にある情報を使用できるようになります

0