我有这样的约会:
Date.today - 7
我尝试将其转换为字符串:
@last_week = strftime((Date.today - 7), '%Y-%m-%d')
但我收到错误"undefined method `strftime'"
。我做错了什么?
答案 0 :(得分:3)
你可以这样做:
@last_week = (Date.today - 7).strftime('%Y-%m-%d')
答案 1 :(得分:1)
这就是你想要的,但不要这样做。:
module Kernel
def strftime(date, format)
date.strftime(format)
end
end
原因,见下面的评论~~~~~
答案 2 :(得分:1)
您正在尝试使用strftime()
,就像它是一个独立的功能一样。在Ruby中,没有这样的功能。正确的方法是调用方法Date#strftime()。
以下是将今天的日期格式化为字符串的示例:
Date.today.strftime("%m/%d/%y")
既然您知道如何获取日期并将日期格式化为可打印的字符串,那么您可以满足您的特定代码需求,即
@last_week = (Date.today - 7).strftime("%Y-%m-%d")
这将为您提供日期格式化字符串" 2016-04-28" (或者左右,取决于你运行代码的时间)。
答案 3 :(得分:0)
strftime
上没有Kernel
的方法(尽管Date
上有这样的实例方法),但是你试图调用这种方法。
@Keith Bennett加入
您没有使用显式对象调用strftime
来接收该方法,因此Ruby运行时默认调用self
上的方法,在此上下文中,该方法是顶级对象, Object
的实例,它继承自BasicObject
并包含Kernel
模块。这些都不包含strftime
方法。但是,Date
方法 已定义strftime
。因此,您可以通过在计算的Date实例上调用strftime
来执行您想要执行的操作。