Java SimpleDataFormat似乎忽略了月份和日期

Java SimpleDataFormat似乎忽略了月份和日期,java,Java,我有一段简单的代码: SimpleDateFormat sqlFormatter = new SimpleDateFormat ("YYYY-MM-dd HH:mm:ss"); String temp = "2012-03-09 12:00:00"; System.out.println (temp); Date last = sqlFormatter.parse (temp); System.out.println (last); 我得到这个输出: 2012-03-09 12:00:00 S

我有一段简单的代码:

SimpleDateFormat sqlFormatter = new SimpleDateFormat ("YYYY-MM-dd HH:mm:ss");
String temp = "2012-03-09 12:00:00";
System.out.println (temp);
Date last = sqlFormatter.parse (temp);
System.out.println (last);
我得到这个输出:

2012-03-09 12:00:00
Sun Jan 01 12:00:00 EST 2012

我知道这应该很简单,但我希望有人能很快发现我遗漏了什么。

我觉得你的模式有点不对劲。我很惊讶你没有看到非法的辩论例外。尝试将以下模式与小写y一起使用,看看这是否解决了您的问题:

SimpleDateFormat sqlFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

一旦我纠正了您的格式字符串-
Y
是不允许的,您需要
Y
-(以及前面提到的打字错误),它工作正常:

SimpleDateFormat sqlFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String temp = "2012-03-09 12:00:00";
System.out.println (temp);
Date last = sqlFormatter.parse (temp);
System.out.println (last);

>2012-03-09 12:00:00
>Fri Mar 09 12:00:00 EST 2012
更正代码如下:

SimpleDataFormat sqlFormatter=新SimpleDataFormat(
“yyyy-MM-dd HH:MM:ss”);
字符串temp=“2012-03-09 12:00:00”;
系统输出打印项次(温度);
datelast=sqlFormatter.parse(temp);
系统输出打印项次(最后一次);


您应该使用
SimpleDateFormat
而不是
SimpleDateFormatter
,并且多年来您使用
yyyy
而不是
yyyy

您需要使用“yyyy”而不是“yyyy”

这是输出

2012-03-09 12:00:00
Fri Mar 09 12:00:00 IST 2012
对于模式

yyyy-MM-dd HH:mm:ss

我注意到您编写的是
newsimpledateformat(…)
,而不是
newsimpledateformat(…)
。这是故意的吗?如果是这样的话,
SimpleDateFormatter
类是否可能做了一些您不知道的影响此解析的事情?您是指
simpledateformatt
而不是
SimpleDateFormatter
?不,不是故意的,只是一个输入错误,谢谢。现在您已经修复了它,您的代码为我提供了
java.lang.IllegalArgumentException:非法模式字符“Y”
,因为
SimpleDataFormat
使用
yyyy
表示年份,而不是
yyyy