0
こんにちは、私はGroovyでTimeCategoryを使用することについて質問を受けました。私のプロジェクトで 、私は月を計算するためのユニークな方法を得た。私はそれをTimeCategoryに追加したい。Groovy TimeCategoryクラスを拡張する
public Integer calcMonateAboDays(def fromDate) {
Date startDate
if (fromDate instanceof String) {
startDate = fromDate.toDate()
} else if (fromDate instanceof Date) {
startDate = fromDate
} else {
assert false: "Wrong fromDate class: " + fromDate.getClass()
}
Date endDate = null
use(TimeCategory) {
endDate = startDate + 1.month
Calendar endCalendar = Calendar.getInstance()
endCalendar.setTime(endDate)
int lastDayOfMonth = endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)
int endDayOfMonth = endCalendar.get(Calendar.DAY_OF_MONTH)
Calendar startCalendar = Calendar.getInstance()
startCalendar.setTime(startDate)
int startDayOfMonth = startCalendar.get(Calendar.DAY_OF_MONTH)
if (lastDayOfMonth != endDayOfMonth || startDayOfMonth == lastDayOfMonth) {
endDate--
}
}
return (endDate - startDate) + 1
}
どのように私はこのように使用するために、既存のTimeCategoryクラスに追加することができます。このような
Date date = new Date()
use(TimeCategory) {
System.out.print(date + 1.monateAbo)
}
スタッフ:
TimeCategory.metaClass.getMonateAbo() {
}
doesntの仕事:(