Je suis confronté à un problème dans Ruby sur Rails. Je cherche à convertir une chaîne de format Tue, 10 Aug 2010 01:20:19 -0400 (EDT)
] en un objet de date.
Y at-il de toute façon je pourrais le faire.
Voici ce que j'ai regardé et essayé avec ce qui suit sans succès:
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
S'il vous plaît aidez-moi avec ça.
Qu'est-ce qui ne va pas chez Date.parse
méthode?
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 vaut mieux utiliser Time
object, supposons que nous ayons la chaîne:
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 trouvais pas de méthode plus simple pour convertir Time
en Date
.
Date.strptime(updated,"%a, %d %m %Y %H:%M:%S %Z")
Devrait être:
Date.strptime(updated, '%a, %d %b %Y %H:%M:%S %Z')
str = "Tue, 10 Aug 2010 01:20:19 -0400 (EDT)"
str.to_date
=> Tue, 10 Aug 2010
Vous pouvez essayer https://rubygems.org/gems/dates_from_string :
Trouver la date dans la structure:
text = "get car from repair 2015-02-02 23:00:10"
dates_from_string = DatesFromString.new
dates_from_string.find_date(text)
=> ["2015-02-02 23:00:10"]