SimpleDateFormat API 显示错误的日期

SimpleDateFormat API displays wrong Date

尝试使用 SimpleDateFormat 格式化几个日期API

String[] dates={"18-01-2015","9-02-2015","21-03-2015"};
for(String s:dates){
    SimpleDateFormat format=new SimpleDateFormat("DD-MM-yyyy");
    Date date=format.parse(s);
    System.out.println(date);
}

输出:

Sun Jan 18 00:00:00 IST 2015
Fri Jan 09 00:00:00 IST 2015
Wed Jan 21 00:00:00 IST 2015

您可能会注意到它显示 JAN 而不是 FEB/MAR 的所有日期。

在构建 SimpleDateFormat 时,您需要 dd 而不是 DDDD 表示 "day of year",而不是 "day of month"。 SimpleDateFormat看起来都在做错事,你应该查阅documentation并非常非常仔细地检查你的模式文本——尤其是大写。

(当然还有其他可能出错的地方 - 我有一个 blog post 最常见的地方。)