web-dev-qa-db-fra.com

Comment créer une nouvelle instance Date dans Ruby

Comment puis-je créer un nouvel objet Date dans IRB avec une date donnée. Ce qui suit n'a pas fonctionné.

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

Selon Date documentation :

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

Si vous essayez d'obtenir les extensions active_support à Date en dehors de Rails, vous devrez utiliser le module core_ext:

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

Plus d'informations dans ce guide Rails: http://edgeguides.rubyonrails.org/active_support_core_extensions.html

1
rossta
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")

Vous devez donc inclure ce module date dans votre code, puis utiliser la méthode strptime à l'intérieur de laquelle vous remarquerez peut-être depuis un an, j'ai utilisé capitalYparce que l'année complète est entrée comme premier paramètre de la méthode strptime. Vous pouvez utiliser small y si la date est comme '29 -05-17 '.

0
coderGuy

Vous devez utiliser l'extension de date de la bibliothèque Ruby Standard. La plupart des exemples de la documentation ne montrent pas toujours que vous en avez besoin.

require 'date'

était ce dont vous aviez besoin. Ce n'est pas un ensemble intégré de classes ou de modules.

Vous obtenez deux classes avec cet ajout,

Date
DateTime

Et avec cela, vous pouvez maintenant utiliser les informations trouvées dans le docs

0
Douglas G. Allen