Rails undefined方法`strftime’代表“2013-03-06”:String

我收到了错误

undefined方法`strftime’代表“2013-03-06”:String

尝试使用strftime从字符串2013-03-06正常显示日期(2013年6月3日星期日或类似的东西)。

在我的index.html.erb中执行此操作的行看起来像这样

我只是在学习Rails,所以我确信这只是一个愚蠢的初学者错误,任何帮助将不胜感激。 谢谢

当strftime是Time / Date类的方法时,看起来你的duedate是一个字符串。 你可以试试这个:

 Date.parse(task.duedate).strftime("%B %e, %Y") 

这解决了我的问题:

 Date.created_at.try(:strftime, ("%B %e, %Y")) 

希望这可以帮助!

您将日期时间存储为字符串而不是实际日期时间。 您需要创建一个新的迁移,如下所示

 change_table :tasks do |t| t.change :duedate, :datetime end 

这样,当您访问duedate时,它已经被解析为datetime对象,而不是每次都必须转换它。

你也可以使用strptime。 它对我有用:)

 DateTime.strptime(task.duedate ,"%B %e, %Y")