J'ai une chaîne 20120119
qui représente une date au format 'YYYYMMDD'
.
Je veux analyser cette chaîne dans un objet Ruby qui représente une date afin que je puisse faire un calcul de date de base, tel que la comparaison avec la date d'aujourd'hui.
J'utilise la version 1.8.6 (exigence).
Vous pouvez utiliser le Date.strptime
méthode fournie dans la bibliothèque standard de Ruby:
require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")
Alternativement, comme suggéré dans les commentaires, vous pouvez utiliser Date.parse
, car l'heuristique fonctionne correctement dans ce cas:
require 'date'
string = "20120723"
date = Date.parse(string)
Les deux lèveront un ArgumentError
si la date n'est pas valide:
require 'date'
Date.strptime('2012-March', '%Y-%m')
#=> ArgumentError: invalid date
Date.parse('2012-Foo') # Note that '2012-March' would actually work here
#=> ArgumentError: invalid date
Si vous souhaitez également représenter les heures, les minutes, etc., vous devez regarder DateTime . DateTime fournit également une méthode parse
qui fonctionne comme la méthode d'analyse sur Date
. Il en va de même pour strptime
.