J'ai une chaîne comme "2011-06-02T23: 59: 59 + 05: 30".Ruby - convertir la chaîne à ce jour
Je veux le convertir en format de date et j'ai besoin d'analyser uniquement la date, "2011-06-02".
J'ai une chaîne comme "2011-06-02T23: 59: 59 + 05: 30".Ruby - convertir la chaîne à ce jour
Je veux le convertir en format de date et j'ai besoin d'analyser uniquement la date, "2011-06-02".
Pour Ruby 1.9.2:
require 'date' # If not already required. If in Rails then you don't need this line).
puts DateTime.parse("2011-06-02T23:59:59+05:30").to_date.to_s
Simplies chemin est
require 'date'
date = "2011-06-02T23:59:59+05:30".gsub(/T.*/, '')
DateTime.parse(date)
Ou vous pouvez utiliser 'Date' au lieu de' DateTime' et ignorer l'opération gsub;) – Schovi
require 'date'
d = Date.parse("2011-06-02T23:59:59+05:30")
d.strftime("%F")
ou simplement 'd.to_s' :) – rubyprince
cela n'analysera pas un horodatage avec l'heure correctement - utilisez' DateTime .parse() 'à moins que vous ne vouliez travailler qu'avec des dates. –
@ AdamMcArthur..Le OP voulait spécifiquement la partie date uniquement. Mais, tu as raison. même pour les dates, si on omet la partie temps et les fuseaux horaires, cela peut être dangereux, car cela peut être un autre jour dans un autre fuseau horaire. Donc, mieux vaut utiliser 'DateTime.parse'. – rubyprince
Time.parse() devrait vous permettre d'analyser tout le temps de la date. Ensuite, vous pouvez utiliser time.strftime (string) pour formater cela comme juste une date dans une chaîne.
date = Time.parse("2011-06-02T23:59:59+05:30") date_string = time.strftime("%y-%m-%d") of date_string = time.strftime("%F")
(voir Ruby Doc for Time pour plus de formats de chaîne de sortie) Le devrait fonctionner au-dessus si vous voulez une chaîne; Si vous voulez gérer un objet date, alors la classe ruby Date peut vous aider à le gérer, mais je crois que tout doit encore être fait avec les objets Time; Voir Ruby Doc for Date pour plus de détails sur la classe Date. J'espère que cela aide, faites-moi savoir si je suis parti dans la mauvaise direction avec ma réponse.
Cela a été demandé et répondu à plusieurs reprises. Je suggère de fermer en double. http://stackoverflow.com/questions/2720907/ruby-convert-string-to-date –
duplication possible de [Ruby String to Date Conversion] (http://stackoverflow.com/questions/3599239/ruby-string-to -date-conversion) – DGM