试试这个:
DateFormat df = new SimpleDateFormat("y");
System.out.println(df.format(new Date()));
如果没有读取SimpleDateFormat的javadoc,您希望输出什么?我的期望是“0”。也就是说,当年的最后一位数,即2010年。
相反,它将其填充为2位数,就像格式字符串是“yy”一样。
为什么呢?似乎很奇怪。如果我想要2位数,那么我就用“yy”。
答案 0 :(得分:5)
“不读javadoc”往往是一种危险的态度。 Joshua Bloch wrote a book on this Java中的奇怪行为。
答案 1 :(得分:4)
这就是你需要检查the documentation:
的原因对于使用缩写年份模式(“y”或“yy”)进行解析,SimpleDateFormat必须解释相对于某个世纪的缩写年份。
“y”是缩写,因此这是预期的行为。
答案 2 :(得分:0)
如果您只想要一个数字:
System.out.println(df.format(new Date()).substring(1));
:)