我在Cassandra列系列中有一个日期列。当我使用datastax java API从此CF检索数据时,可以将此日期对象视为java.util.Date
对象。
它有getYear()
方法但不推荐使用。相应的javadoc说:
从JDK 1.1版开始,由Calendar.get(Calendar.YEAR) - 1900。
取代
如何正确获取此日期对象的年,月,日属性?
答案 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"当前分钟等等:))