Calendar使用

2023-02-01  本文已影响0人  咚咚蹡蹡
object TimeUtils {

    /**
     * 将时间戳转换成描述性时间(昨天、今天、明天)
     *
     * @param timestamp 时间戳
     * @return 描述性日期
     */
    fun roughReleaseTime(timeStamp: Long): String {
        //当前时间
        val currentTime: Calendar = Calendar.getInstance()
        //要转换的时间
        val time: Calendar = Calendar.getInstance()
        time.timeInMillis = timeStamp
        //年相同
        if (currentTime.get(Calendar.YEAR) == time.get(Calendar.YEAR)) {
            //获取一年中的第几天并相减,取差值
            return when (currentTime.get(Calendar.DAY_OF_YEAR) - time.get(Calendar.DAY_OF_YEAR)) {
                1 -> "昨天"
                0 -> "今天"
                -1 -> "明天"
                else -> TimeUtils.millis2String(timeStamp, "MM/dd")
            }
        }
        return TimeUtils.millis2String(timeStamp, "yyyy/MM/dd")
    }

    /**
     * 得到年份月份列表
     */
    fun getYearMonth(time: Long) :MutableList<DataAnalysisYearBean>{
        val endTime = System.currentTimeMillis()
        val calendar: Calendar = Calendar.getInstance()

        calendar.time = TimeUtils.millis2Date(time)
        val createYear :Int = calendar[Calendar.YEAR]
        val createMonday :Int = calendar[Calendar.MONDAY]+ ONE

        calendar.time = TimeUtils.millis2Date(endTime)
        val endYear = calendar[Calendar.YEAR]
        val endMonday = calendar[Calendar.MONDAY]+ ONE

        if(createYear == endYear){
            //如果起始时间和终止时间是一年
            val yearList = mutableListOf<DataAnalysisYearBean>()
            val monthList = mutableListOf<String>()
            for (monthItem in createMonday..endMonday) monthList.add("${monthItem}月")
            val bean = DataAnalysisYearBean("${endYear}年",monthList)
            yearList.add(bean)
            return yearList
        }else{
            //如果起始时间和终止时间不是一年
            val yearList = mutableListOf<DataAnalysisYearBean>()
            for (yearItem in createYear..endYear){
                when(yearItem){
                    //如果轮询到起始时间年份
                    createYear->{
                        val monthList = mutableListOf<String>()
                        for (monthItem in createMonday..TWELVE)
                            monthList.add("${monthItem}月")
                        yearList.add(DataAnalysisYearBean("${yearItem}年",monthList))
                    }
                    //如果轮询到终止时间年份
                    endYear->{
                        val monthList = mutableListOf<String>()
                        for (monthItem in ONE..endMonday)
                            monthList.add("${monthItem}月")
                        yearList.add(DataAnalysisYearBean("${yearItem}年",monthList))
                    }
                    //如果轮询到中间年份
                    else->{
                        val monthList = mutableListOf<String>()
                        for (monthItem in ONE..TWELVE)
                            monthList.add("${monthItem}月")
                        yearList.add(DataAnalysisYearBean("${yearItem}年",monthList))
                    }
                }
            }
            return yearList
        }
    }

    /**
     * 获取本日00:00:00的时间戳
     */
    fun getToday(): Long {
        val calendar = Calendar.getInstance()
        calendar.set(Calendar.HOUR_OF_DAY, 0)
        calendar.set(Calendar.MINUTE,0)
        calendar.set(Calendar.SECOND,0)
        calendar.set(Calendar.MILLISECOND,0)
        return calendar.timeInMillis
    }

    /**
     * 获取本月第一天00:00:00的时间戳
     */
    fun getFirstDayMonth(): Long {
        val calendar = Calendar.getInstance()
        calendar.set(Calendar.DAY_OF_MONTH, 1)
        calendar.set(Calendar.HOUR_OF_DAY, 0)
        calendar.set(Calendar.MINUTE,0)
        calendar.set(Calendar.SECOND,0)
        calendar.set(Calendar.MILLISECOND,0)
        return calendar.timeInMillis
    }

    /**
     * 获取上月第一天00:00:00的时间戳
     */
    fun getFirstDayLastMonth(): Long {
        val calendar = Calendar.getInstance()
        calendar.add(Calendar.MONTH, -1)
        calendar.set(Calendar.DAY_OF_MONTH, 1)
        calendar.set(Calendar.HOUR_OF_DAY, 0)
        calendar.set(Calendar.MINUTE,0)
        calendar.set(Calendar.SECOND,0)
        calendar.set(Calendar.MILLISECOND,0)
        return calendar.timeInMillis
    }

    /**
     * 获取上月最后一天23:59:59:999毫秒的时间戳
     */
    fun getStartMonth(): Long {
        val calendar = Calendar.getInstance()
        calendar.set(Calendar.DAY_OF_MONTH, 1)
        calendar.add(Calendar.DATE, -1)
        calendar.set(Calendar.HOUR_OF_DAY, 23)
        calendar.set(Calendar.MINUTE,59)
        calendar.set(Calendar.SECOND,59)
        calendar.set(Calendar.MILLISECOND,999)
        return calendar.timeInMillis
    }

    /**
     * 获取前amount个月的时间戳
     */
    fun getBeforeMonths(amount:Int): Long {
        val calendar = Calendar.getInstance()
        calendar.add(Calendar.MONTH, -amount)
        return calendar.timeInMillis
    }

    /**
     * 获取前amount个月的时间戳
     * time 设置当前的时间,以time时间为基准
     */
    fun getBeforeMonths(time:Long, amount:Int): Long {
        val calendar = Calendar.getInstance()
        calendar.timeInMillis = time
        calendar.add(Calendar.MONTH, -amount)
        return calendar.timeInMillis
    }
    /**
     * 获取后amount个月的时间戳
     * time 设置当前的时间,以time时间为基准
     */
    fun getNextMonths(time:Long,amount:Int): Long {
        val calendar = Calendar.getInstance()
        calendar.timeInMillis = time
        calendar.add(Calendar.MONTH, amount)
        return calendar.timeInMillis
    }
上一篇 下一篇

猜你喜欢

热点阅读