一、比较时间的大小-三种方式:
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"
}
工具类源码:查看源码