2010-10-19 5 views
18

Eclipse avverte che sto usando un metodo obsoleto:Java Data getDate() deprecato, riscritta da usare il calendario, ma sembra brutto

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

Così ho riscritto come

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

Sembra lavorare ma sembra brutto. La mia domanda è che ho refactoring questo il modo migliore? In caso contrario, come si dovrebbe refactoring? Ho bisogno del numero del giorno di una data memorizzata in un bean.

ho finito per l'aggiunta di un metodo nei miei DateUtils per ripulirlo

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

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

un suggerimento: utilizzare java 8 (vedere la risposta sotto) – torina

risposta

24

Va bene. Per me il bit più brutto è il trattino basso nel nome del metodo. Convenzioni di Java disapprovano i caratteri di sottolineatura lì.

Si consiglia di dare un'occhiata a joda-time. E 'lo standard de-facto per lavorare con data/ora:

new DateTime(date).getDayOfMonth(); 
+2

Devo essere d'accordo, re: i caratteri di sottolineatura nel nome del metodo. Sembra che qualcuno stia cercando di riscrivere un blocco di codice PHP in Java. –

+0

I caratteri di sottolineatura provengono dai nomi dei campi del mio database. A un certo punto del percorso ho dovuto fare riferimento ai campi con maiuscole e ho avuto difficoltà a leggere EVENTSDATE come data di inizio dell'evento. Quindi ho preso l'abitudine di usare il carattere di sottolineatura – jeff

+2

@jeff il fatto che i nomi dei tuoi database utilizzino una convenzione non significa che il tuo codice java non può usare un'altra convenzione. In realtà, è una pratica comune. – Bozho

0

Se si desidera una data più elegante/Tempo api, utilizzare Joda Time.

+6

quindi digli come fare ciò che vuole con joda-time – Bozho

+0

FYI, il progetto [Joda-Time] (http://www.joda.org/joda-time/) è ora in [modalità manutenzione] (https: //en.wikipedia.org/wiki/Maintenance_mode), con il team che consiglia la migrazione al [java.time] (http://docs.oracle.com/javase/9/docs/api/java/time/package- summary.html) classi. Vedi [Tutorial di Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

11
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.. 
*/ 

È possibile vedere java.util.Calendar API.

+0

FYI, le fastidiose vecchie classi data-ora come ['java.util.Date'] (https://docs.oracle.com/javase/9/docs/api/java/util/Date.html), [ 'java.util.Calendar'] (https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.html) e' java.text.SimpleDateFormat' sono ora [legacy] (https://en.wikipedia.org/wiki/Legacy_system), soppiantato dal [java.time] (https://docs.oracle.com/javase/9/docs/api/java/time/package-summary.html) classi integrate in Java 8 e Java 9. Vedi [Tutorial di Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

4

Con Java 8 e versioni successive, è piuttosto semplice. C'è LocalDate classe, che ha getDayOfMonth() metodo:

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

Con i java.time classi non ti servono più quelle librerie di terze parti. Consiglierei di leggere su LocalDate e LocalDateTime.

Problemi correlati