2010-10-19 13 views
18

Eclipse ben kaldırılmış bir yöntem kullanıyorum gerektiği yönünde uyarıyor görünür:Java Tarih getDate() kaldırılmış, takvim kullanmak için refactored ama çirkin

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

yüzden

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

görünüyor olarak yeniden yazdım çalışmak ama çirkin görünüyor. Sorum şu, bunu en iyi şekilde yeniden gözden geçirdim mi? Eğer değilse, nasıl refactor olurdun? Fasulyede saklanan tarihin gün sayısına ihtiyacım var.

Ben

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

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

bir ipucu: java 8'i kullanın (aşağıdaki cevaba bakın) – torina

cevap

24

Sorun değil o kadar temiz benim DateUtils bir yöntemi ekleme sona erdi. Bana göre çirkin bit, metodun ismindeki alt çizgi. Java kuralları orada alt çizgilerle kaşlarını çattı.

joda-time'a göz atmak isteyebilirsiniz. Eğer daha şık bir Tarih/Saat API, Joda Time kullanmak istiyorsanız

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

Merak ediyorum, re: yöntem isminin alt yüzleri. Bu, Java'da bir PHP kodu bloğunu yeniden yazmaya çalışan birine benziyor. –

+0

Altçizgi, veritabanı alan adlarımdan gelir. Yol boyunca bir noktada, tüm büyük harflerle alanlara başvurmam gerekti ve olay başlangıç ​​tarihi olarak OLENTSDATE değerini okumak zor oldu. Yani altyazı – jeff

+2

@jeff kullanarak, veritabanı adlarınızın bir kuralı kullanması, java kodunuzun başka bir sözleşme kullanamayacağı anlamına gelmez. Aslında, bu yaygın bir uygulamadır. – Bozho

0

: Bu tarih/zaman ile çalışmak için fiili bir standarttır.

+6

daha sonra joda-time – Bozho

+0

FYI ile ne istediğini nasıl yapacağını söyleyin, [Joda-Time] (http://www.joda.org/joda-time/) projesi şu anda [bakım modunda] (https: http://docs.oracle.com/javase/9/docs/api/java/time/package- adresinden geçiş yaparak [java.time] geçişini öneren ekiple birlikte //en.wikipedia.org/wiki/Maintenance_mode) summary.html) sınıfları. Bkz. [Oracle Tutorial] (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.. 
*/ 

java.util.Calendar API.

+0

FYI, ['java.util.Date'] gibi sıkıntılı eski tarih-zaman sınıfları (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) ve 'java.text.SimpleDateFormat' artık [eski] ([java.time] tarafından desteklenen https://en.wikipedia.org/wiki/Legacy_system) (https://docs.oracle.com/javase/9/docs/api/java/time/package-summary.html) Java 8 ve Java 9'a yerleşik sınıflar. Bkz. [Oracle Tutorial] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

4

Java 8 ve üstü ile oldukça kolaydır. Artık bu üçüncü şahıs kitaplıkları gerekmez java.time sınıflar ile

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

: getDayOfMonth() yöntemi vardır LocalDate sınıfı yoktur. LocalDate ve LocalDateTime hakkında öneriyorum.

İlgili konular