Java Date getDate () устарела, реорганизована для использования календаря, но выглядит некрасиво - PullRequest
21 голосов
/ 20 октября 2010

Eclipse предупреждает, что я использую устаревший метод:

eventDay = event.getEvent_s_date().getDate();

Так что я переписал это как

eventDay = DateUtil.toCalendar(event.getEvent_s_date()).get(Calendar.DATE);

Кажется, работает, но выглядит ужасно. Мой вопрос, я рефакторинг это лучший способ? Если нет, как бы вы рефакторинг? Мне нужен номер дня даты, хранящейся в бобе.

Я закончил тем, что добавил в свой DateUtils метод для его очистки

eventDay = DateUtil.getIntDate(event.getEvent_s_date());

public static int getIntDate(Date date) {
    return DateUtil.toCalendar(date).get(Calendar.DATE);
}

Ответы [ 4 ]

28 голосов
/ 20 октября 2010

Всё хорошо.Для меня более уродливый бит - это подчеркивание в имени метода.Здесь подчеркиваются соглашения Java.

Вы можете взглянуть на joda-time .Это де-факто стандарт для работы с датой / временем:

new DateTime(date).getDayOfMonth();
16 голосов
/ 18 марта 2014
Calendar cal = Calendar.getInstance();
            cal.setTime(date);

Integer date = cal.get(Calendar.DATE);

/*Similarly you can get whatever value you want by passing value in cal.get()
      ex DAY_OF_MONTH
      DAY_OF_WEEK
      HOUR_OF_DAY
      etc etc.. 
*/

Вы можете увидеть java.util.Calendar API .

4 голосов
/ 02 февраля 2018

С Java 8 и более поздними версиями это довольно просто.Существует класс LocalDate, который имеет метод getDayOfMonth():

LocalDate date = now();
int dayOfMonth = date.getDayOfMonth();

С классами java.time вам больше не нужны эти сторонние библиотеки,Я бы рекомендовал прочитать о LocalDate и LocalDateTime.

0 голосов
/ 20 октября 2010

Если вы хотите более элегантный API даты / времени, используйте Joda Time .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...