从java.util.Date获取年份

从java.util.Date获取年份,java,cassandra,deprecated,datastax,java.util.date,Java,Cassandra,Deprecated,Datastax,Java.util.date,我在Cassandra专栏系列中有一个日期专栏。当我使用datastax java API从这个CF检索数据时,这个日期对象可以作为java.util.date对象 它有一个getYear()方法,但已弃用。相应的javadoc说: 从JDK版本1.1开始,由Calendar.get(Calendar.YEAR)-1900代替 如何从该日期对象正确获取年、月、日属性?一个好的选择是使用日期格式,如下所示: SimpleDateFormat sdf1 = new SimpleDateFormat(

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

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

从JDK版本1.1开始,由Calendar.get(Calendar.YEAR)-1900代替


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

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

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);

你能试一下吗

      // 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));
如中所述

@已弃用的公共int getYear()已弃用。从JDK版本1.1开始, 替换为Calendar.get(Calendar.YEAR)-1900。返回一个 是从包含或的年份中减去1900的结果 以该日期对象表示的时间瞬间开始,如下所示 在当地时区进行解释。返回值:表示为的年份 这个日期,减1900


要检索日期和时间字段,可以使用以下代码:

DateFormat.getDateTimeInstance().getCalendar().get(DateFormat.MONTH_FIELD)

只需将MONTH\u字段替换为一个类似“DAY\u OF\u WEEK\u FIELD”的字段,以检索一周中的某一天(我认为“1”代表星期一)或当前分钟的“MINUTE\u FIELD”,等等:)

在java8中使用LocalDate对象

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int year  = localDate.getYear();
int month = localDate.getMonthValue();
int day   = localDate.getDayOfMonth();

无需使用
SimpleDataFormat
<代码>日历#get很好,而且速度更快。您必须在获取年份之前设置日期:
cal.setTime(您的DateObjectfromCassandra)然后你可以做
cal.get(日历年)@JonSkeet Yep,但OP想要的是Cassandra对象的年份,而不是当前年份你是对的@Narmer,我根据问题的标题回答。因为月份从0开始。一月=0,二月=1等@ChamilaWijayarathna如果您得到的值是
java.util.Date
,那么您希望在一年中使用哪个时区?
日期
只是一个时间点。可能重复