SimpleDateFormat 在解析“YYYY-MM-DD HH:MM”时产生错误的日期时间

我试图将一个()解析为,但是得到比预期的错误的日期。StringYYYY-MM-dd HH:mmDate

法典:

Date newDate = null;
String dateTime = "2013-03-18 08:30";
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm", Locale.ENGLISH);
df.setLenient(false);
try {
    newDate = df.parse(dateTime);
} catch (ParseException e) {
    throw new InvalidInputException("Invalid date input.");
}

生产:

星期日 12 月 30 08:30:00 EST 2012 (错误)

我尝试关闭宽松,但没有运气。

更新

感谢Sudhanshu的回答,它帮助我解决了Java转换问题。当我将上述代码返回的日期输入到数据库中时,我得到了正确的日期,但时间始终是。00:00

ps.setDate(3, new java.sql.Date(app.getDate().getTime()));

答案 1

YYYY 应该是 yyyy-

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);

請在
這裡查看 SimpleDateFormat 的文獻 Java 6 : http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
Java 7 : http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html


答案 2

使用小写字母 Y,而不是大写字母。即 yyyy 不是 YYYY

检查此处的评论:Java简单日期格式和那里引用的其他答案。