日期字符串错误

Fre*_*rik 2 ruby string date

当我尝试通过终端中的IRB添加我的日期时:

song.released_on = Date.new(2013,10,10)
Run Code Online (Sandbox Code Playgroud)

它说有以下错误 TypeError: no implicit conversion of Date into String

在这段代码中:

def released_on=date
  super Date.strptime(date, '%m/%d/%Y')
end 
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几个小时知道并且无法找到问题.想知道有人可以帮忙吗?

hir*_*lau 7

代码:

def released_on=date
  super Date.strptime(date, '%m/%d/%Y')
end
Run Code Online (Sandbox Code Playgroud)

使用strptimeDate类的(string-parse-time)函数.它需要两个字符串,一个表示实际日期,另一个表示字符串格式化程序.

为了使事情有效,你需要做的就是改变:

song.released_on = Date.new(2013,10,10) # Wrong, not a string!
song.released_on = '10/10/2013' # Correct!
Run Code Online (Sandbox Code Playgroud)

您还可以将功能更改为也接受日期:

def released_on=date
  parsed_date = case date
    when String then Date.strptime(date, '%m/%d/%Y')
    when Date then date
    else raise "Unable to parse date, must be Date or String of format '%m/%d/%Y'"
  end
  super parsed_date
end
Run Code Online (Sandbox Code Playgroud)