我收到错误
未定义的方法`strftime'代表“2013-03-06”:字符串
尝试使用strftime从字符串2013-03-06正常显示日期(2013年6月3日星期日或类似事件)。
在我的index.html.erb中执行此操作的行,看起来像这样
<td><%= task.duedate.strftime("%B %e, %Y") %></td>
我只是在学习Rails,所以我确信这只是一个愚蠢的初学者错误,任何帮助都将不胜感激。谢谢
答案 0 :(得分:32)
当strftime是Time / Date类的方法时,看起来你的duedate是一个字符串。你可以试试这个:
Date.parse(task.duedate).strftime("%B %e, %Y")
答案 1 :(得分:1)
这解决了我的问题:
{{1}}
希望这有帮助!
答案 2 :(得分:0)
您将日期时间存储为字符串而不是实际日期时间。您需要创建一个新的迁移,如下所示
change_table :tasks do |t|
t.change :duedate, :datetime
end
这种方式当您访问duedate时,它已经被解析为datetime对象,而不是每次都必须转换它。
答案 3 :(得分:0)
你也可以使用strptime。它对我有用:)
DateTime.strptime(task.duedate ,"%B %e, %Y")
答案 4 :(得分:0)
我也遇到了这个问题,在 controller.rb 文件中创建了一个方法将日期从字符串格式转换为 datetime 对象后,我能够解决它,然后我在将数据保存到数据库之前在 create 函数中调用了这个方法。< /p>
def convert_to_date(date_as_string)
#expecting date format in "yyyy-mm-dd" format
if date_as_string.length > 0
split_date = date_as_string.split('-')
return Date.new(year=split_date[0].to_i, month=split_date[1].to_i,
day=split_date[2].to_i)
else
return nil
end
end