解析"YYYY-MM-dd HH:mm"时,SimpleDateFormat产生错误的日​​期时间

Sas*_*Sas 12 java datetime simpledateformat datetime-parsing

我试图解析一个String(YYYY-MM-dd HH:mm)Date,但是错误的日期比预期的错.

码:

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.");
}
Run Code Online (Sandbox Code Playgroud)

生产:

美国东部时间2012年12月30日08:30(错误)

我试过设置Lenient但没有运气.

更新

感谢Sudhanshu的回答,它帮助我解决了Java转换问题.当我从上面的代码输入返回的日期到数据库时,我正确地得到了日期,但时间总是如此00:00.

ps.setDate(3, new java.sql.Date(app.getDate().getTime()));
Run Code Online (Sandbox Code Playgroud)

Sud*_*kar 47

YYYY应该是yyyy-

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

请在此处查看SimpleDateFormat的文档
Java 6:http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
Java 7:http://docs.oracle.com/javase/ 7 /文档/ API/JAVA /文本/ SimpleDateFormat.html

  • 你确实拯救了我的一天 (2认同)

Ray*_*ira 7

使用小盒子Y,而不是帽子.即yyyy不YYYY

检查这里的注释:Java简单日期格式和那里引用的其他答案.


Rai*_*lam 5

有两个问题.

  1. 格式字符串应该是"yyyy-MM-dd HH:mm".
  2. 用于存储时间的数据类型是否TimeStamp存在Date于数据库中.

纠正这两件事,您将能够随时间存储和检索日期.