Java日期对象作为月份返回30?

时间:2013-10-23 18:04:03

标签: java algorithm

为什么这段代码会给我带来麻烦?

public Date setupDate(){
        String startDateString ="05/10/2010 04:30:20";
        SimpleDateFormat df = new SimpleDateFormat("mm/dd/yyyy HH:mm:ss");
        Date startDate = null;
        try {
            startDate = df.parse(startDateString);
            String newDateString = df.format(startDate);
            System.err.println(newDateString);
            System.err.println(startDate.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return startDate;
    }

输出:

SEVERE:   30/10/2010 04:30:20
SEVERE:   Sun Jan 10 04:30:20 EST 2010

我当然预计5月10日,而不是1月(我不知道它是如何成为1月,或30岁。

2 个答案:

答案 0 :(得分:3)

阅读Date and Time Patterns

部分

你应该使用

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

M表示一年中有一个月,而m表示分钟

答案 1 :(得分:1)

月份的格式符号使用大写M;您已使用两次会议记录m,此处为30。作为参考,这是Javadocs that explain all format symbols for SimpleDateFormat