ruby-on-rails - 为什么我不能解析保存到 Ruby 变量中的日期字符串?

标签 ruby-on-rails ruby activesupport

我需要在我的 Rails 应用程序中运行以下代码:

ActiveSupport::TimeZone["Central Time (US & Canada)"].parse(game.date).utc.to_date.strftime("%_m/%d")[1..-1]

游戏在哪里 @games.each do |game|

但这不起作用,我收到错误,TypeError:没有将 ActiveSupport::TimeWithZone 隐式转换为 String

但是,我可以运行:

ActiveSupport::TimeZone["Central Time (US & Canada)"].parse("2014-04-11 12am").utc.to_date.strftime("%_m/%d")[1..-1]

返回“4/11”

如何将上述代码与“game.date”一起使用而不是硬编码字符串?

编辑

一个 Game 对象如下所示(来自 db/seeds.rb):

Game.create(id: 9, date: "2014-04-11 12am", time: "705PM", opponent: "Jacksonville", away: false, event: "friday night fireworks")

编辑 2

在 Rails 控制台中,当我执行 game.date 时,它​​返回:

Fri, 11 Apr 2014 00:00:00 UTC +00:00

所以它似乎不是一个字符串。

最佳答案

为了使您尝试做的事情有效,您需要使用 to_s 将您的日期转换为字符串:

ActiveSupport::TimeZone["Central Time (US & Canada)"].parse(game.date.to_s).utc.to_date.strftime("%_m/%d")[1..-1]

但是,您应该考虑这是否真的是您想要做的。就目前而言,这段代码采用日期,将其转换为字符串,解析字符串以返回日期,然后再次将其转换为字符串。你确定你不能忍受这样的事情吗?

game.date.strftime(%_m/%d")[1..-1]

关于ruby-on-rails - 为什么我不能解析保存到 Ruby 变量中的日期字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022656/

相关文章:

ruby-on-rails - 在 HAML 文档中的 Ruby 插值中拯救异常

ruby-on-rails - 带有 ActiveSupport 的 Rails 4 ActiveRecord 模块

ruby-on-rails - Rails seeds.rb : How can I skip multiple callbacks using Class. skip_callback?

ruby-on-rails - 路由别名,可能吗?

ruby-on-rails - 载波NoMethodError : undefined method `image_url' for Item

javascript - 如何使用 onblur 在 javascript 中隐藏一个 div - rails

ruby-on-rails - 为什么功能测试失败了?

sql - 为什么 Timeout.timeout(sec) 不适用于 activerecord

ruby 鞋4 : how does Sample13 work?

ruby-on-rails - 如何在 Ruby 中创建一个新的 Date 实例