* 默认 endTime > startTime
fun
timeDifferenceByCalendar
(startTime:
Long
, endTime:
Long
)
: Set<
Int
> {
val
calendar1 = Calendar.getInstance()
val
calendar2 = Calendar.getInstance()
calendar1.timeInMillis = startTime
calendar2.timeInMillis = endTime
val
year = calendar2.
get
(Calendar.YEAR) - calendar1.
get
(Calendar.YEAR)
val
month = calendar2.
get
(Calendar.MONTH) + year *
12
- calendar1.
get
(Calendar.MONTH)
val
day = calendar2.
get
(Calendar.DAY_OF_YEAR) - calendar1.
get
(Calendar.DAY_OF_YEAR)
val
minute = calendar2.
get
(Calendar.MINUTE) - calendar1.
get
(Calendar.MINUTE)
val
second = calendar2.
get
(Calendar.SECOND) - calendar1.
get
(Calendar.SECOND)
return
setOf(year, month, day, minute, second)
* 通过Period获取时间差,只能获取年月日
*
@param
startTime
*
@param
endTime
* 默认 endTime > startTime
@RequiresApi(Build.VERSION_CODES.O)
fun
timeDifferenceByPeriod
(startTime:
Long
, endTime:
Long
)
: Set<
Int
> {
val
calendar1 = Calendar.getInstance()
val
calendar2 = Calendar.getInstance()
calendar1.timeInMillis = startTime
calendar2.timeInMillis = endTime
val
localTime1 = LocalDate.of(calendar1.
get
(Calendar.YEAR), calendar1.
get
(Calendar.MONTH), calendar1.
get
(Calendar.DAY_OF_MONTH))
val
localTime2 = LocalDate.of(calendar2.
get
(Calendar.YEAR), calendar2.
get
(Calendar.MONTH), calendar2.
get
(Calendar.DAY_OF_MONTH))
val
period = Period.between(localTime1, localTime2)
val
year = period.years
val
month = period.months
val
day = period.days
return
setOf(year, month, day)
* 通过ChronoUnit获取时间差,只能获取年月日
*
@param
startTime
*
@param
endTime
* 默认 endTime > startTime
@RequiresApi(Build.VERSION_CODES.O)
fun
timeDifferenceByChronoUnit
(startTime:
Long
, endTime:
Long
)
: Set<
Long
> {
val
calendar1 = Calendar.getInstance()
val
calendar2 = Calendar.getInstance()
calendar1.timeInMillis = startTime
calendar2.timeInMillis = endTime
val
localTime1 = LocalDateTime.of(calendar1.
get
(Calendar.YEAR), calendar1.
get
(Calendar.MONTH), calendar1.
get
(Calendar.DAY_OF_MONTH), calendar1.
get
(Calendar.HOUR), calendar1.
get
(Calendar.MINUTE), calendar1.
get
(Calendar.SECOND))
val
localTime2 = LocalDateTime.of(calendar2.
get
(Calendar.YEAR), calendar2.
get
(Calendar.MONTH), calendar2.
get
(Calendar.DAY_OF_MONTH), calendar2.
get
(Calendar.HOUR), calendar2.
get
(Calendar.MINUTE), calendar2.
get
(Calendar.SECOND))
val
year = ChronoUnit.YEARS.between(localTime1, localTime2)
val
month = ChronoUnit.MONTHS.between(localTime1, localTime2)
val
day = ChronoUnit.DAYS.between(localTime1, localTime2)
val
hour = ChronoUnit.HOURS.between(localTime1, localTime2)
val
minute = ChronoUnit.MINUTES.between(localTime1, localTime2)
val
second = ChronoUnit.SECONDS.between(localTime1, localTime2)
return
setOf(year, month, day, hour, minute, second)
* 通过除法获取时间差,只能获取日时分秒差
*
@param
startTime
*
@param
endTime
* 默认 endTime > startTime
@RequiresApi(Build.VERSION_CODES.O)
fun
timeDifferenceDefault
(startTime:
Long
, endTime:
Long
)
: Set<
Long
> {
val
day = ((endTime - startTime) / (
1000
*
60
*
60
*
24
))
val
hour = ((endTime - startTime) / (
1000
*
60
*
60
))
val
minute = ((endTime - startTime) / (
1000
*
60
))
val
second = ((endTime - startTime) /
1000
)
return
setOf(day, hour, minute, second)
* 判断某个时间是AM/PM
fun
checkTimeAM
(timeStamp:
Long
)
:
Int
{
val
calendar = GregorianCalendar()
calendar.timeInMillis = timeStamp
return
calendar[GregorianCalendar.AM_PM]
* 得到包含AM/PM的时间
fun
getTimeIncludeAM
(timeStamp:
Long
)
: String {
val
date = Date(timeStamp)
val
formatter = SimpleDateFormat(
"hh.mm a"
)
return
formatter.format(date)
* 修改AM/PM 文字
fun
updateTimeAm
(timeStamp:
Long
)
: String {
val
symbols = DateFormatSymbols()
val
modifiedAmPm = arrayOf(
"上午"
,
"下午"
)
symbols.amPmStrings = modifiedAmPm
val
date = Date(timeStamp)
val
formatter = SimpleDateFormat(
"hh.mm a"
, symbols)
return
formatter.format(date)
\