Java 无法将字符串格式化为日期对象

Java 无法将字符串格式化为日期对象,java,parsing,date,formatting,Java,Parsing,Date,Formatting,我有一根像这样的线 Aug 16, 2013,11:30:10 逗号可以用不同的分隔符替换,日期和时间位置可以切换 我正在尝试将此格式用于SimpleDataFormat(dtString是上面的字符串): 但是当我运行d.getYear()时,结果是113 除.getYear()之外,所有其他Date方法都返回正确的结果。我错过什么了吗?我的SimpleDataFormatter错误吗?您不应该使用。它已被弃用 至于您得到的结果,它是Javadoc中指定的: 返回一个值,该值是从包含该日期对

我有一根像这样的线

Aug 16, 2013,11:30:10
逗号可以用不同的分隔符替换,日期和时间位置可以切换

我正在尝试将此格式用于SimpleDataFormat(dtString是上面的字符串):

但是当我运行d.getYear()时,结果是113

除.getYear()之外,所有其他Date方法都返回正确的结果。我错过什么了吗?我的SimpleDataFormatter错误吗?

您不应该使用。它已被弃用

至于您得到的结果,它是Javadoc中指定的:

返回一个值,该值是从包含该日期对象表示的时间瞬间或以该日期对象表示的时间瞬间开始的年份中减去1900的结果,如在本地时区中解释的那样

改用日历API。或者更好,如果你可以使用第三方库,那么我真的建议你试试。或者等到明年Java8发布,它有一个新的日期时间API。

您不应该使用它。它已被弃用

至于您得到的结果,它是Javadoc中指定的:

返回一个值,该值是从包含该日期对象表示的时间瞬间或以该日期对象表示的时间瞬间开始的年份中减去1900的结果,如在本地时区中解释的那样


改用日历API。或者更好,如果你可以使用第三方库,那么我真的建议你试试。或者等到明年Java8发布,它将有一个新的日期时间API。

检查SimpleDataFormat解析结果的简单方法是

System.out.println(d);
并给出了正确的结果

Fri Aug 16 11:30:10 EEST 2013

问题在于,解释年、月、日、小时、分钟和秒的日期方法已被弃用。请参见日期API检查SimpleDataFormat解析结果的简单方法如下

System.out.println(d);
并给出了正确的结果

Fri Aug 16 11:30:10 EEST 2013

问题在于,解释年、月、日、小时、分钟和秒的日期方法已被弃用。参见日期API

日期格式应为MM only而不是MMMM d=new SimpleDateFormat(“MM-dd,yyyy,hh:MM:ss”,Locale.ENGLISH)。解析(dtString);日期格式应为MM only而不是MMMM d=new SimpleDateFormat(“MM-dd,yyyy,hh:MM:ss”,Locale.ENGLISH).parse(dtString);啊,明白了。谢谢在这种情况下,我必须实际使用Date对象,因为它将进入MongoDB,而他们还没有处理日历对象。@Sempus。哦您可以将
日期
转换为
日历
,然后轻松返回。通过他们的API,你会看到适合他们的构造函数。听起来不错。所以我想我会把日期存储在Mongo中,当我把它拿出来的时候,我会把它转换成日历对象,然后这样使用它。啊,明白了。谢谢在这种情况下,我必须实际使用Date对象,因为它将进入MongoDB,而他们还没有处理日历对象。@Sempus。哦您可以将
日期
转换为
日历
,然后轻松返回。通过他们的API,你会看到适合他们的构造函数。听起来不错。所以我想我会把日期存储在Mongo中,当我把它拿出来的时候,我会把它转换成一个日历对象,这样使用它。