Merge remote-tracking branch 'origin/master'

This commit is contained in:
Dboy
2021-02-01 16:46:20 +08:00

View File

@ -32,4 +32,86 @@ object DateUtils {
}
return date.time
}
/**
* 将计时毫秒值[millisecond]转换为时分秒
*/
fun getGapTime(millisecond: Long): String {
val hours = millisecond / (1000 * 60 * 60)
val minutes = (millisecond - hours * (1000 * 60 * 60)) / (1000 * 60)
val second = (millisecond - hours * (1000 * 60 * 60) - minutes * (1000 * 60)) / 1000
var diffTime: String
diffTime = if (minutes < 10) {
"$hours:0$minutes"
} else {
"$hours:$minutes"
}
diffTime = if (second < 10) {
"$diffTime:0$second"
} else {
"$diffTime:$second"
}
return diffTime
}
/**
* 获取以当前日期为基准的某一时间段的日期
* @param isFuture Boolean 真为未来时间 假为以前的时间
* @param interval Int 间隔时间 以当前时间为基准 距今天前n天或后n天开始 就是n 0是当前日期
* @param size String 时间区间长度 比如获取五天的时间 就是5 当前日期也算一天
* @return List<String> 日期集合 顺序为日期的新旧程度
* @throws RuntimeException 如果[interval]小于0或者[size]小于1会抛出[RuntimeException]
*
* 示例:获取后天开始 为期七天的时间就是 getExcerptDate(true, 2, 7)
* 获取昨天开始再往前7天的时间 getExcerptDate(false, 1, 7)
*/
fun getExcerptDate(
isFuture: Boolean,
interval: Int,
size: Int,
dateFormat: String
): List<String> {
if (interval < 0) throw RuntimeException("\"interval\" it can't be less than 0")
if (size < 1) throw RuntimeException("\"size\" it can't be less than 1")
val simpleDateFormat = SimpleDateFormat(dateFormat, Locale.CHINESE)
val calendar = Calendar.getInstance()
val currentDayOfYear = calendar.get(Calendar.DAY_OF_YEAR)
val currentYear = calendar.get(Calendar.YEAR)
val dateList = mutableListOf<String>()
if (isFuture) {
(interval until interval + size).forEach {
val timestamp = getSomedayDate(it, calendar, currentDayOfYear, currentYear)
dateList.add(simpleDateFormat.format(timestamp))
}
} else {
(-interval downTo -interval - size + 1).forEach {
val timestamp = getSomedayDate(it, calendar, currentDayOfYear, currentYear)
dateList.add(simpleDateFormat.format(timestamp))
}
}
return dateList
}
/**
* 获取距离今天的某一天的时间戳
* @param numberOfDaysBetween Int 间隔今天的天数 正数为未来时间 负数为以前的时间
* @param calendar Calendar Calendar对象 使用依赖注入方式 提高对象的复用性
* @param currentDayOfYear Int 当前时间在当年的天 使用Calendar获取
* @param currentYear Int 当前年 使用Calendar获取
* @return Long 时间戳
*/
fun getSomedayDate(
numberOfDaysBetween: Int,
calendar: Calendar,
currentDayOfYear: Int,
currentYear: Int
): Long {
calendar.set(Calendar.DAY_OF_YEAR, currentDayOfYear)
calendar.set(Calendar.YEAR, currentYear)
calendar.set(
Calendar.DAY_OF_YEAR,
calendar.get(Calendar.DAY_OF_YEAR) + numberOfDaysBetween
)
return calendar.time.time
}
}