Pourquoi je ne peux pas analyser une chaîne de date enregistrée à une variable en Ruby?
J'ai besoin d'exécuter le code suivant dans mon application Rails:
ActiveSupport::TimeZone["Central Time (US & Canada)"].parse(game.date).utc.to_date.strftime("%_m/%d")[1..-1]
Où le jeu est @games.each do |game|
Mais cela ne fonctionne pas, j'obtiens l'erreur, TypeError: no implicit conversion of ActiveSupport::TimeWithZone into String
.
Cependant, je peux courir:
ActiveSupport::TimeZone["Central Time (US & Canada)"].parse("2014-04-11 12am").utc.to_date.strftime("%_m/%d")[1..-1]
qui renvoie "4/11"
Comment puis-je utiliser le code ci-dessus avec de jeu.date " au lieu de la chaîne codée en dur?
MODIFIER
un objet de Jeu ressemble à celui-ci (à partir de db/graines.rb):
Game.create(id: 9, date: "2014-04-11 12am", time: "705PM", opponent: "Jacksonville", away: false, event: "friday night fireworks")
EDIT 2
Dans la console rails quand je fais le jeu.date à laquelle il retourne:
Fri, 11 Apr 2014 00:00:00 UTC +00:00
il semble donc que ce n'est pas une chaîne.
Est
Pouvez-vous s'il vous plaît poster jeu de l'échantillon de l'objet ou @jeu de tableau?
J'ai édité ma question. Merci!
parce que dans la console
De toute façon pour analyser l'objet Date?
game.date
une chaîne ou à une autre date type d'objet?Pouvez-vous s'il vous plaît poster jeu de l'échantillon de l'objet ou @jeu de tableau?
J'ai édité ma question. Merci!
parce que dans la console
#to_s
d'être appelé Date
objet dans la console.De toute façon pour analyser l'objet Date?
OriginalL'auteur reknirt | 2014-04-11
Vous devez vous connecter pour publier un commentaire.
À faire ce que vous essayez de faire le travail, vous avez besoin de convertir votre date en une chaîne de caractères avec
to_s
:Cependant, vous devez vous demander si c'est vraiment ce que vous voulez faire. Comme il est maintenant, ce code est une date, en la convertissant en une chaîne de caractères, l'analyse de la chaîne pour en revenir à la date, puis de les convertir en une chaîne à une deuxième fois. Êtes-vous sûr que vous ne pourriez pas obtenir en quelque chose comme?
OriginalL'auteur Wally Altman
Vous pouvez utiliser en dessous de chaîne:
En tant que comité de lecture de la documentation http://rubyinrails.com/2013/09/strftime-format-time-in-ruby/
Dans votre boucle, vous pouvez utiliser:
OriginalL'auteur Sumit Munot
ActiveSupport::TimeZone.parse
besoins d'une chaîne et non unDate
objet exemple ci-dessous:donc changer:
:
OriginalL'auteur bjhaid