时间线计算代码

2015-12-14 0 831
时间线计算代码
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))


    }
}

遇见资源网 groovy 时间线计算代码 http://www.ox520.com/13698.html

上一篇:

已经没有上一篇了!

下一篇:

已经没有下一篇了!

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务