web-dev-qa-db-ja.com

Java Date getDate()は非推奨、カレンダーを使用するようにリファクタリングされましたが、見栄えが悪い

Eclipseは非推奨のメソッドを使用していることを警告しています:

_eventDay = event.getEvent_s_date().getDate();
_

だから私はそれを次のように書き直しました

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

動作しているように見えますが、見た目は醜いです。私の質問は、これを最善の方法でリファクタリングしたかどうかです。そうでない場合、どのようにリファクタリングしますか? Beanに保存されている日付の日番号が必要です。

DateUtilsにメソッドを追加してクリーンアップしました

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

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

大丈夫だよ。私にとって、醜いビットはメソッド名の下線です。 Javaアンダースコアが付いている慣習はそこにあります。

joda-time をご覧ください。これは、日付/時刻を操作するための事実上の標準です。

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

Java.util.Calendar API を確認できます。

20

Java 8以降では、非常に簡単です。LocalDateクラスがあり、getDayOfMonth()メソッドがあります:

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

Java.time クラスを使用すると、これらのサードパーティライブラリは不要になります。 LocalDate および LocalDateTime について読むことをお勧めします。

4
torina

よりエレガントな日付/時刻APIが必要な場合は、 Joda Time を使用します。

0