从java.util.Date获取Year

时间:2014-12-15 17:48:25

标签: 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。

取代

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

4 个答案:

答案 0 :(得分:30)

你能尝试一下吗?

      // 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()已过时。从JDK 1.1版开始,   由Calendar.get(Calendar.YEAR) - 1900替换。返回一个值   是从包含或的年份中减去1900的结果   从此Date对象表示的时刻开始,如   在当地时区解释。返回:表示的年份   这个日期,减去1900年。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

检索日期&时间字段,您可以使用此代码:

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

只需将MONTH_FIELD替换成其他类似的东西,例如" DAY_OF_WEEK_FIELD"检索星期几(我认为' 1'代表星期一)或" MINUTE_FIELD"当前分钟等等:))