System.out.format("%tB",12);
我应该得到一个“十二月”,但是我得到一个很好的例外
Exception in thread "main" java.util.IllegalFormatConversionException: b != java.lang.Integer
这意味着我使用的语法是错误的。
我找不到任何在线解释%tB
格式化命令的参考。
有人帮忙澄清此事吗?
提前谢谢。
答案 0 :(得分:4)
日期/时间 - 可以应用于能够编码的Java类型 日期或时间:
long
,Long
,Calendar
和Date
。
您可以使用12L
等长整数来消除异常。但请注意,格式化程序需要日期的整数表示(即具有毫秒精度的Unix时间戳)。
为了得到你想要的东西,你可以尝试在1970年的一个月中手动建立一个大概的时间戳:
int month = 12;
int millisecondsInDay = 24*60*60*1000;
long date = ((month - 1L)*30 + 15)*millisecondsInDay;
System.out.format("%tB", date);
或者只使用Date
对象:
System.out.format("%tB", new Date(0, 12, 0));
另请注意,如果没有Formatter
,您可以做同样的事情:
java.text.DateFormatSymbols.getInstance().getMonths()[12-1];
有关详细信息,请参阅DateFormatSymbols
。
答案 1 :(得分:2)
样本编程
import java.util.Calendar;
import java.util.Formatter;
public class MainClass {
public static void main(String args[]) {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt.format("Today is day %te of %<tB, %<tY", cal);
System.out.println(fmt);
}
}