[英]My toString() method isn't overriding the Calendar toString() method
[英]overriding tostring method in Gregorian Calendar
使用内部类,我重写了格里高利历的toString方法:
GregorianCalendar date = new GregorianCalendar(2010, 5, 12)
{
public String toString()
{
return String.format("%s/%s/%s", YEAR, MONTH, DAY_OF_MONTH);
}
};
当我打印日期时,它应该是这样的:
2010年5月12日
但输出是:
1/2/5
YEAR
, MONTH
和DAY_OF_MONTH
只是用于get
和set
方法的字段编号。 这是它的工作原理
public String toString() {
return String.format("%d/%02d/%02d", get(YEAR), get(MONTH) + 1, get(DAY_OF_MONTH));
}
请注意,Calendar中的月份从0开始,这就是我们需要get(MONTH) + 1
这应该给你你期望的东西:
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
GregorianCalendar date = new GregorianCalendar(2010, 5, 12)
{
public String toString()
{
Date thisDate = this.getTime();
return sdf.format(thisDate);
}
};
你几乎就在那里..但是,YEAR,MONTH指的是枚举,你打印的是那些枚举的序数。 你想要的是使用那些带有GregorianCalendar.get(Calendar.Value)的枚举来获得真正的价值。
例
GregorianCalendar date = new GregorianCalendar(2010, 5, 12)
{
@Override
public String toString()
{
return String.format("%s/%s/%s", get(YEAR), get(MONTH)+1, get(DAY_OF_MONTH));
}
};
这将解决你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.