使用内部类,我重写了格里高利历的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
答案 0 :(得分:7)
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
答案 1 :(得分:7)
这应该可以满足您的期望:
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);
}
};
答案 2 :(得分:3)
你快到了..但是,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));
}
};
这将解决您的问题。