Подтвердить что ты не робот

Получить год из java.util.Date

У меня есть столбец даты в семействе столбцов Cassandra. Когда я извлекаю данные из этого CF с помощью java API datastax, этот объект даты может приниматься как объект java.util.Date.

Он имеет метод getYear(), но он устарел. В соответствующем javadoc говорится:

Начиная с версии JDK версии 1.1, заменяемой Calendar.get(Calendar.YEAR) - 1900.

Как я могу получить атрибуты year, month, day из этого объекта даты правильно?

4b9b3361

Ответ 1

Не могли бы вы попробовать, как 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 Year: " + cal.get(Calendar.YEAR));
      System.out.println("Calendar Month: " + cal.get(Calendar.MONTH));
      System.out.println("Calendar Day: " + cal.get(Calendar.DATE));

Как упоминалось в javadocs;

@Deprecated public int getYear() Устарела. Начиная с версии 1.1 JDK, заменен Calendar.get(Calendar.YEAR) - 1900. Возвращает значение, которое является результатом вычитания 1900 из года, который содержит или начинается с момента времени, представленного этим объектом Date, как интерпретируется в локальном часовом поясе. Возврат: год, представленный эта дата, минус 1900 г.

Ответ 2

Хорошим вариантом является использование формата даты следующим образом:

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

Ответ 3

использовать объект LocalDate в java8

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int year  = localDate.getYear();
int month = localDate.getMonthValue();
int day   = localDate.getDayOfMonth();

Ответ 4

Чтобы получить поля даты и времени, вы можете использовать этот код:

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

Просто замените MONTH_FIELD одним нажатием на другое, например "DAY_OF_WEEK_FIELD", чтобы получить день недели (я думаю, "1" означает понедельник) или "MINUTE_FIELD" для текущей минуты и т.д.:)