我有一个看起来像这样的字符串
Aug 16, 2013,11:30:10
逗号可以替换为不同的分隔符和日期&时间位置可以切换。
我正在尝试将此格式用于我的SimpleDateFormat(dtString是上面的字符串):
Date d = null;
try {
d = new SimpleDateFormat("MMMM dd, yyyy,hh:mm:ss", Locale.ENGLISH).parse(dtString);
} catch (ParseException ex) {
Logger.getLogger(MonKaiClientImpl.class.getName()).log(Level.SEVERE, null, ex);
}
return d;
但是当我运行d.getYear()时,结果是 113 。
除了.getYear()之外,所有其他Date方法都返回正确的结果。我错过了什么吗?我的SimpleDateFormatter错了吗?
答案 0 :(得分:4)
您不应该使用Date#getYear
。它被弃用了。
至于你得到的结果,它是在Javadoc中指定的:
返回一个值,该值是从包含或以此Date对象表示的时间开始的年份减去1900的结果,如本地时区中所解释的那样。
请改用Calendar API。或者甚至更好,如果你可以使用第三方库,那么我真的建议你试试Joda Time。或者等待 Java 8 明年到来,它有一个新的Date Time API。
答案 1 :(得分:0)
检查SimpleDateFormat解析结果的简单方法是
System.out.println(d);
并显示正确的结果
Fri Aug 16 11:30:10 EEST 2013
问题在于,不推荐使用解释年,月,日,小时,分钟和秒的日期方法。请参阅Date API