0

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

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

4

2 回答 2

4

你不应该使用Date#getYear. 它已被弃用。

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

返回一个值,该值是从包含或以此 Date 对象表示的时刻开始的年份减去 1900 的结果,如本地时区所解释的那样。

请改用日历 API。或者更好的是,如果您可以使用 3rd 方库,那么我真的建议您尝试Joda Time。或者等待明年Java 8的到来,它有一个新的 Date Time API。

于 2013-08-16T15:46:27.120 回答
0

检查 SimpleDateFormat 解析结果的简单方法是这样

System.out.println(d);

它显示正确的结果

Fri Aug 16 11:30:10 EEST 2013

问题是解释年、月、日、小时、分钟和秒的 Date 方法已被弃用。请参阅日期 API

于 2013-08-16T16:13:32.530 回答