web-dev-qa-db-fra.com

Analyser la chaîne de date dans Ruby

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

29
Kevin

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.

66
robustus