要做一个距离活动开始还有xx日xx时xx分的需求,然后写了个小demo
直接上代码:
val MILLISECOND: Long = 1
val SECOND = MILLISECOND * 1000
val MINUTE = SECOND * 60
val HOURS = MINUTE * 60
val DAY = HOURS * 24
//活动开始时间
var inputMessage = “2023-02-06 15:18:21”
//转换成date
var inputDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINA).parse(inputMessage)
//当前时间
val formatToDate = formatToDate(System.currentTimeMillis())
val formatDateDifference =
formatDateDifference(inputDateFormat.time - formatToDate.time, "", "")
tvShow!!.text = formatDateDifference
/**
* 格式化时间差
*
* @param timestamp
* @param postfix 返回字符前缀
* @param postfix 返回字符后缀
*/
fun formatDateDifference(timestamp: Long, prefix: String, postfix: String): String {
val day = timestamp / DAY
val hour = (timestamp - DAY * day) / HOURS
val minute = (timestamp - DAY * day - HOURS * hour) / MINUTE
val second = (timestamp - DAY * day - HOURS * hour - MINUTE * minute) / 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)
// }
return when {
day > 0 -> String.format("$prefix%s天%s时%s分$postfix", day, hour, minute)
hour > 0 -> String.format("$prefix%s时%s分$postfix", hour, minute,second)
minute > 0 -> String.format("$prefix%s分%s秒$postfix", minute,second)
else -> String.format("$prefix%s秒$postfix",second)
}
}
/**
* 默认为24小时制
*
* @param l
* @return
*/
fun formatToDate(l: Long): Date = formatToDate(l, "yyyy-MM-dd HH:mm:ss")