Cassandra列ファミリーに日付列があります。datastaxJava APIを使用してこのCFからデータを取得すると、この日付オブジェクトは_Java.util.Date
_オブジェクト。
getYear()
メソッドがありますが、非推奨です。対応するjavadocは言う:
JDKバージョン1.1以降は、Calendar.get(Calendar.YEAR)-1900に置き換えられました。
この日付オブジェクトから年、月、日の属性を適切に取得するにはどうすればよいですか?
Tihsのようにしてみてください。
// 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に置き換えられました。このDateオブジェクトで表される時刻が含まれるか、その日付で始まる年から1900を引いた結果の値を返します。ローカルタイムゾーン。戻り値:この日付で表される年から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);
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();
日付と時刻のフィールドを取得するには、次のコードを使用できます。
DateFormat.getDateTimeInstance().getCalendar().get(DateFormat.MONTH_FIELD)
MONTH_FIELDを「DAY_OF_WEEK_FIELD」などの別の何かに置き換えて、曜日(「1」は月曜日を表すと思います)または「MINUTE_FIELD」は現在の分などを取得します。