将字符串格式化为日期对象时遇到问题

时间:2013-08-16 15:43:36

标签: java parsing date formatting

我有一个看起来像这样的字符串

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错了吗?

2 个答案:

答案 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