从 java.util.Date 获取年份

我在Cassandra列系列中有一个日期列。当我使用datastax java API从这个CF中检索数据时,这个日期对象可以作为一个对象。java.util.Date

它有一个方法,但它已被弃用。相应的javadoc说:getYear()

从 JDK 版本 1.1 开始,替换为 Calendar.get(Calendar.YEAR) - 1900。

如何正确获取此日期对象的年、月、日属性?


答案 1

你能试试这样吗?

      // create a calendar
      Calendar cal = Calendar.getInstance();
      cal.setTime(datetime);  //use java.util.Date object as arguement
      // get the value of all the calendar date fields.
      System.out.println("Calendar's Year: " + cal.get(Calendar.YEAR));
      System.out.println("Calendar's Month: " + cal.get(Calendar.MONTH));
      System.out.println("Calendar's Day: " + cal.get(Calendar.DATE));

javadocs 中所述;

@Deprecated public int getYear() Deprecated.从 JDK 版本 1.1 开始,替换为 Calendar.get(Calendar.YEAR) - 1900。返回一个值,该值是从包含此 Date 对象所表示的时间时刻或以此日期所表示的瞬间开头的年份中减去 1900 的结果,如在本地时区中所解释的那样。回报:此日期所代表的年份减去 1900 年。


答案 2

一个不错的选择是使用日期格式,如下所示:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy");
Date             date = sdf1.parse(datetime);
String           year = sdf2.format(date);

推荐