解释SimpleDateFormat的行为

时间:2010-07-20 14:04:02

标签: java datetime core

试试这个:

DateFormat df = new SimpleDateFormat("y");
System.out.println(df.format(new Date()));

如果没有读取SimpleDateFormat的javadoc,您希望输出什么?我的期望是“0”。也就是说,当年的最后一位数,即2010年。

相反,它将其填充为2位数,就像格式字符串是“yy”一样。

为什么呢?似乎很奇怪。如果我想要2位数,那么我就用“yy”。

3 个答案:

答案 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));

:)