我有一个setter方法设置一个月。它需要返回一个字符串'01' - '12'。我希望ti能够获取数字和文本(包括3个月和全部月份,我正在通过输入Aug来测试它,但无法使用ti,它将输入日期设置为与输入日期相同(8月)不能让setter方法工作
的代码是
def month=(month)
# this can take a number or string, either with 3 char month or full month
# it returns a 2 char string, left padded with 0s
if !month.numeric?
case month.upcase[0,3]
when 'JAN'
month = '01'
when 'FEB'
month = '02'
when 'MAR'
month = '03'
when 'APR'
month = '04'
when 'MAY'
month = '05'
when 'JUN'
month = '06'
when 'JUL'
month = '07'
when 'AUG'
month = '08'
when 'SEP'
month = '09'
when 'OCT'
month = '10'
when 'NOV'
month = '11'
when 'DEC'
month = '12'
else
month = '00'
end
end if
@month=month.rjust(2, '0')
end
而且我与
event.month = "Aug"
p event.month
现在,这里是真正的怪异位调用它。如果我增加AP线
end if
p month
@month=month.rjust(2, '0')
end
它打印“8月”,但该方法的工作原理,'p event.month'返回'08'刚刚被调用后
任何想法,我做错了?
本
什么是“c字符串”? – sawa
一个错字,只是将其改为字符串。对不起 –
您是否考虑过使用[Date](https://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html)来获取月份名称?方法更容易,让操作系统照顾本地化...尝试'p Date :: ABBR_MONTHNAMES'并使用它代替24行代码。 – dawg