Android 比较时间的大小,时间差,格式化时间,以及格式化两个时间大小差值、格式化秒表

一、比较时间的大小-三种方式:

1、获取时间戳比较

timestamp1 > timestamp2

2、转换为Date比较

val date=Date()
val date2=时间2
date.after(date2)

3、使用工具类(推荐

val date = Date()
val date2 = Date()
/*date>date2*/
DateUtils.after(date, date2)
/*date<date2*/
DateUtils.before(date, date2)
/*比较时间戳*/
DateUtils.after(System.currentTimeMillis(), 121321324548L)
/*使用时间字符串比较*/
DateUtils.after("2018-08-22 10:13", "2018-09-01 10:13")
/*还可以指定格式*/
DateUtils.after("2018-08-22 10:13", "2018-09-01 10:13", "yyyy-MM-dd HH:mm:ss")

还可以比较多个时间大小

        /*获取最大的时间*/
        DateUtils.compareAfter(date, date2, date3, date4)
        /*获取最小的时间*/
        DateUtils.compareBefore(date, date2, date3, date4)

date可以为Date、Long、String 

二、格式化时间-(两种方式)

1、使用自带的SimpleDateFormat

        /*格式化为Date*/
        val resultDate = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse("2018-08-22 10:13")
        /*格式化为Long*/
        val resultLong=SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse("2018-08-22 10:13").time
        /*格式化为String*/
        val resultString=SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).format(date)

2、使用工具类(推荐

        /*格式化为时间*/
        DateUtils.formatToDate(System.currentTimeMillis())
        /*也可以指定格式*/
        DateUtils.formatToDate("2018-08-22 10:13", "yyyy-MM-dd HH:mm:ss")

        /*可以输出为多种格式*/
        DateUtils.formatToLong(date)
        DateUtils.formatToLong("2018-08-22 10:13")
        DateUtils.formatToLong("2018-08-22 10:13", "yyyy-MM-dd HH:mm:ss")
        
        DateUtils.formatToStr(date,"yyyy-MM-dd HH:mm:ss")
        DateUtils.formatToStr(System.currentTimeMillis())

三、格式化两个时间大小差值

将两个时间戳相减,得到之间的差值,得到差值,再进行格式化。

public static final long SECOND = 1000;
public static final long MINUTE = SECOND * 60;
public static final long HOURS = MINUTE * 60;
public static final long DAY = HOURS * 24;
     /**
     * 格式化时间差
     *
     * @param timestamp
     * @param postfix 前缀
     * @param postfix 后缀
     */
    fun formatDateDifference(timestamp: Long, prefix: String, postfix: String): String {

        val day = timestamp / DateUtils.DAY
        val hour = (timestamp - DateUtils.DAY * day) / DateUtils.HOURS
        val minute = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hour) / DateUtils.MINUTE
        val second = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hour - DateUtils.MINUTE * minute) / DateUtils.SECOND

        return when {
            day > 0 -> String.format("$prefix%s天%s时%s分%s秒$postfix", day, hour, minute, second)
            hour > 0 -> String.format("$prefix%s时%s分%s秒$postfix", hour, minute, second)
            minute > 0 -> String.format("$prefix%s分%s秒$postfix", minute, second)
            else -> String.format("$prefix%s秒$postfix", second)
        }
    }

使用调用

formatDateDifference(date.time - date2.time, "还有:", "就可以采摘啦")

四、格式化秒表

例如

        /*50毫秒*/
        Log2.e(DateUtils.formatDateStopwatch(DateUtils.MILLISECOND * 50))
        /*1天零2小时*/
        Log2.e(DateUtils.formatDateStopwatch(DateUtils.DAY * 1 + DateUtils.HOURS * 2))
        Log2.e(DateUtils.formatDateStopwatch(DateUtils.SECOND * 179 + DateUtils.MINUTE * 1 + DateUtils.MILLISECOND * 10))
        Log2.e(DateUtils.formatDateStopwatch((DateUtils.SECOND * 1.5).toLong()))

 输出结果

00:00,050
01 02:00:00,000
03:59,010
00:01,500
     /**
     * 格式化秒表
     * 有天的 02 11:11:12,534
     * 有时的 11:11:12,534
     * 有分的 11:12,534
     * 有秒的 11:12,534
     * 有毫秒 11:12,534
     * @param timestamp 单位毫秒
     */
    fun formatDateStopwatch(timestamp: Long): String {
        return if (timestamp > 0) {
            val day = timestamp / DateUtils.DAY
            val hours = (timestamp - DateUtils.DAY * day) / DateUtils.HOURS
            val minute = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hours) / DateUtils.MINUTE
            val second = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hours - DateUtils.MINUTE * minute) / DateUtils.SECOND
            val millisecond = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hours - DateUtils.MINUTE * minute - DateUtils.SECOND * second) / DateUtils.MILLISECOND
            val tempDay=if (day in 0..9) "0$day" else day.toString()
            val tempHours=if (hours in 0..9) "0$hours" else hours.toString()
            val tempMinute=if (minute in 0..9) "0$minute" else minute.toString()
            val tempSecond=if (second in 0..9) "0$second" else second.toString()
            val tempMillisecond=if (millisecond in 0..9) "0$millisecond" else millisecond.toString()

            return when {
                day > 0 -> String.format("%s %s:%s:%s,%s", tempDay, tempHours, tempMinute, tempSecond, tempMillisecond)
                hours > 0 -> String.format("%s:%s:%s,%s", tempHours, tempMinute, tempSecond, tempMillisecond)
                minute > 0 -> String.format("%s:%s,%s", tempMinute, tempSecond, tempMillisecond)
                second > 0 -> String.format("%s:%s,%s", tempMinute, tempSecond, tempMillisecond)
                minute > 0 -> String.format("%s:%s,%s", tempMinute, tempSecond, tempMillisecond)
                else -> "00:00,00"
            }
        } else "00:00,00"
    }

工具类源码:查看源码

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值