将日期转换为字符串表示形式

时间:2016-05-06 03:41:07

标签: ruby date

我有这样的约会:

Date.today - 7

我尝试将其转换为字符串:

@last_week = strftime((Date.today - 7), '%Y-%m-%d')

但我收到错误"undefined method `strftime'"。我做错了什么?

4 个答案:

答案 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来执行您想要执行的操作。