Ruby 日期字符串错误
当我试图通过终端中的IRB添加日期时:Ruby 日期字符串错误,ruby,string,date,Ruby,String,Date,当我试图通过终端中的IRB添加日期时: song.released_on = Date.new(2013,10,10) 它表示存在以下错误TypeError:没有将日期隐式转换为字符串 在此代码中: def released_on=date super Date.strptime(date, '%m/%d/%Y') end 我已经试了好几个小时了,我知道但找不到问题。想知道有人能帮忙吗?您将日期实例传递给: 相反,您必须传递一个字符串(使用正确的格式): 守则: def release
song.released_on = Date.new(2013,10,10)
它表示存在以下错误TypeError:没有将日期隐式转换为字符串
在此代码中:
def released_on=date
super Date.strptime(date, '%m/%d/%Y')
end
我已经试了好几个小时了,我知道但找不到问题。想知道有人能帮忙吗?您将
日期
实例传递给:
相反,您必须传递一个字符串(使用正确的格式):
守则:
def released_on=date
super Date.strptime(date, '%m/%d/%Y')
end
使用Date类的strptime
(字符串解析时间)函数。它需要两个字符串,一个表示实际日期,另一个带有字符串格式化程序
要使事情正常运行,您需要做的就是改变:
song.released_on = Date.new(2013,10,10) # Wrong, not a string!
song.released_on = '10/10/2013' # Correct!
您还可以将函数更改为同时接受日期:
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
你的问题是什么?或者让released\u on=
足够聪明,可以按原样传递日期。
song.released_on = Date.new(2013,10,10) # Wrong, not a string!
song.released_on = '10/10/2013' # Correct!
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