web-dev-qa-db-fra.com

Java Date getDate () obsolète, refactorisé pour utiliser le calendrier mais semble moche

Eclipse avertit que j'utilise une méthode obsolète:

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

Je l'ai donc réécrit

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

Cela semble fonctionner mais ça a l'air moche. Ma question est: ai-je refactorisé cela de la meilleure façon? Sinon, comment refactoriseriez-vous? J'ai besoin du numéro de jour d'une date stockée dans un bean.

J'ai fini par ajouter une méthode dans mes DateUtils pour le nettoyer

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

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

C'est bon. Pour moi, le bit le plus laid est le trait de soulignement dans le nom de la méthode. Java froncent les sourcils là-bas.

Vous voudrez peut-être jeter un œil à joda-time . C'est la norme de facto pour travailler avec la date/l'heure:

new DateTime(date).getDayOfMonth();
28
Bozho
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.. 
*/

Vous pouvez voir Java.util.Calendar API .

20
Arun Pratap Singh

Avec Java 8 et versions ultérieures, c'est assez simple. Il y a la classe LocalDate, qui a la méthode getDayOfMonth():

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

Avec les classes Java.time vous n'avez plus besoin de ces bibliothèques tierces. Je recommanderais de lire LocalDate et LocalDateTime .

4
torina

Si vous voulez une API Date/Heure plus élégante, utilisez Joda Time .

0
highlycaffeinated