清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
class DateTimeUtil {
static def timeLine = {
def subMinute = delegate.upint(Calendar.instance.timeInMillis.minus(it.time), 1000 * 60)
def oneHour = 60
def oneDay = oneHour * 24
def oneWeek = oneDay * 7
def oneMonth = oneDay * 30
def oneYear = oneDay * 365
def inhour = 0..<oneHour
def inday = oneHour..<oneDay
def inweek = oneDay..<oneWeek
def inmonth = oneWeek..<oneMonth
def inyear = oneMonth..<oneYear
def outyear = oneYear..< Integer.MAX_VALUE
switch (subMinute) {
case inhour:
"${subMinute}分钟前"
break
case inday:
"${subMinute.intdiv(oneHour)}小时前"
break
case inweek:
"${subMinute.intdiv(oneDay)}天前"
break
case inmonth:
"${subMinute.intdiv(oneWeek)}周前"
break
case inyear:
"${subMinute.intdiv(oneMonth)}月前"
break
case outyear:
"${subMinute.intdiv(oneYear)}年前"
break
default:
"E=mc2"
}
}
static def upint = { A, B ->
/**
向上取整算法
http://hi.baidu.com/chinakite/blog/item/3d02f01f339ac3f1e1fe0bc0.html
UP(A/B) = int( (A+B-1)/B )
*/
A>0?A.plus(B).minus(1).intdiv(B).toInteger():1
}
static void main(args) {
println Calendar.instance.timeInMillis
println new Date().time
println timeLine(new Date(108, 6, 1))
println timeLine(new Date(110, 6, 1))
println timeLine(new Date(110, 7, 1))
println timeLine(new Date(111, 3, 1))
println timeLine(new Date(111, 5, 1))
println timeLine(new Date(111, 5, 15))
println timeLine(new Date(111, 6, 1))
println timeLine(new Date(111, 6, 8))
println timeLine(new Date(111, 6, 8, 22, 22))
println timeLine(new Date(111, 6, 9, 15, 24))
println timeLine(new Date(111, 6, 9, 17, 24))
println timeLine(new Date(111, 6, 9, 19, 44))
}
}