我试图找出确定给定日期是否从月末起10天或更短的最佳方法。我基本上构建的功能将在月份快结束时显示消息。谢谢!
答案 0 :(得分:2)
另一种选择是:
def isEndOfMonth() {
Calendar.instance.with {
it[ DAY_OF_MONTH ] + 10 > getActualMaximum( DAY_OF_MONTH )
}
}
答案 1 :(得分:1)
怎么样?
def date = new Date();
// ten days is in the next month so we are near end of month
if ((date + 10).month != date.month) {
// write message
}
我是groovy的新手所以我可能在语法上犯了一个错误,但概念应该没问题。
答案 2 :(得分:1)
boolean isLessThanNDaysFromEndOfMonth(Date d, int n) {
return (d + n).month != d.month
}
答案 3 :(得分:0)
Michael Rutherfurd的建议groovyfied:
Date.metaClass.isEndOfMonth = {
(delegate+10).month != delegate.month
}
new Date().isEndOfMonth()
答案 4 :(得分:0)
Joda Time库非常值得探索。 Joda时间的作者是JSR-310的规范主角,旨在提供Java 7替代“旧”日历/日期类。
import org.joda.time.*
@Grapes([
@Grab(group='joda-time', module='joda-time', version='1.6.2')
])
DateTime now = new DateTime()
DateTime monthEnd = now.monthOfYear().roundCeilingCopy()
Days tendays = Days.days(10)
if (Days.daysBetween(now, monthEnd).isLessThan(tendays)) {
println "Month is nearly over"
}
else {
println "Plenty of time left"
}