这是我的代码:
java.util.Date TODAY = new java.util.Date();
SimpleDateFormat SDF = new SimpleDateFormat( "YYYY-MM-DD" );
System.out.println ( SDF.format( TODAY ) );'
结果是:
2015-02-33
但今天的日期是2015-02-02!
这种错误输出背后的原因可能是什么?
答案 0 :(得分:4)
您希望使用该月的yyyy
年和dd
天。
但是,我建议您迁移到JSR-310,它内置于Java 8中,可用于早期版本的Java。
是相同的代码System.out.println(LocalDate.now());
打印
2105-02-02
答案 1 :(得分:2)
这种错误输出背后的原因可能是什么?
您对日期格式字符串的假设是错误的,输出正确。
y Year
Y Week year
D Day in year
d Day in month
M Month in year
m Minute in hour
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Y
每周通常会在新的一年左右给出不正确的结果。 D
将在2月份提供错误的结果。因此,您的格式在上个月的大部分时间都显得很好。
答案 2 :(得分:1)
当SimpleDateFormat的格式指定如下:
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD");
这里的周年不是你想要的。 See what is week year.
Your today's date is 2015-02-02, which means that it is 32 days since the beginning of the year 2015 passed and your are on the 33 day。这就是为什么你得到日期“2015-02-33”。
表示年(而不是周年)和日期将格式更改为SimpleDateFormat(“ yyyy -MM- DD 强>“);