我在Cassandra列族中有一个日期列。使用Datastax Java API从该CF检索数据时,可以将此日期对象视为java.util.Date
对象。
它有一个getYear()
方法,但已弃用。相应的Javadoc说:
自JDK版本1.1起,由Calendar.get(Calendar.YEAR)- 1900替换。
如何正确地从此日期对象获取年、月、日属性?
我在Cassandra列族中有一个日期列。使用Datastax Java API从该CF检索数据时,可以将此日期对象视为java.util.Date
对象。
它有一个getYear()
方法,但已弃用。相应的Javadoc说:
自JDK版本1.1起,由Calendar.get(Calendar.YEAR)- 1900替换。
如何正确地从此日期对象获取年、月、日属性?
你可以试着像这样做:
// 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得到的,解释为本地时区。返回: 表示此日期的年份-1900。
cal.setTime(yourDateObjectFromCassandra);
然后您可以执行 cal.get(Calendar.YEAR);
。 - NarmerDate date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int year = localDate.getYear();
int month = localDate.getMonthValue();
int day = localDate.getDayOfMonth();
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);
SimpleDateFormat
。使用Calendar#get
即可,速度更快。 - Luiggi Mendoza要检索日期和时间字段,您可以使用以下代码:
DateFormat.getDateTimeInstance().getCalendar().get(DateFormat.MONTH_FIELD)
只需将MONTH_FIELD替换为其他内容,如“DAY_OF_WEEK_FIELD”以检索一周中的某一天(我认为“1”代表星期一),或者使用“MINUTE_FIELD”来获取当前分钟等等 :)
java.util.Date
获取,那么您想使用哪个时区来表示这一年?Date
只是一个时间点。 - Jon Skeet