web-dev-qa-db-ja.com

Java.util.DateからYearを取得します

Cassandra列ファミリーに日付列があります。datastaxJava APIを使用してこのCFからデータを取得すると、この日付オブジェクトは_Java.util.Date_オブジェクト。

getYear()メソッドがありますが、非推奨です。対応するjavadocは言う:

JDKバージョン1.1以降は、Calendar.get(Calendar.YEAR)-1900に置き換えられました。

この日付オブジェクトから年、月、日の属性を適切に取得するにはどうすればよいですか?

12

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を引いたもの。

30
Semih Eker

次のように日付形式を使用することをお勧めします。

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);
1
Rakesh KR

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();
1
Ammar Bozorgvar

日付と時刻のフィールドを取得するには、次のコードを使用できます。

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

MONTH_FIELDを「DAY_OF_WEEK_FIELD」などの別の何かに置き換えて、曜日(「1」は月曜日を表すと思います)または「MINUTE_FIELD」は現在の分などを取得します。

0
Cyphrags