68 votes

conversion d'une chaîne en variable-date

Je suis confronté à un problème dans Ruby on Rails. Je suis à la recherche pour convertir une chaîne de format Tue, 10 Aug 2010 01:20:19 -0400 (EDT) pour un objet date.

Est-il de toute façon, je pourrais faire cela.

Voici ce que j'ai regardé et essayé à la suite avec pas de chance:

  1. Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
  2. Chronique De L'Analyseur
  3. Ruby: convertit une chaîne en date
  4. L'analyse de la date à partir de texte à l'aide de Ruby

Merci de m'aider à sortir de cette.

130voto

klew Points 9437

Quel est le problème avec la méthode Date.parse ?

 str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
date = Date.parse str
=> #<Date: 4910837/2,0,2299161>
puts date
2010-08-10
 

Cela semble fonctionner.

Le seul problème ici est le fuseau horaire. Si vous voulez une date dans le fuseau horaire UTC, il est préférable d'utiliser l'objet Time , supposons que nous ayons la chaîne suivante:

 str = "Tue, 10 Aug 2010 01:20:19 +0400"
puts Date.parse str
2010-08-10
puts Date.parse(Time.parse(str).utc.to_s)
2010-08-09
 

Je ne pouvais pas trouver de méthode plus simple pour convertir Time en Date .

13voto

steenslag Points 29662
 Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
 

Devrait être:

 Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X