Skip to content

Instantly share code, notes, and snippets.

@saravr
Created September 30, 2021 19:27
Show Gist options
  • Save saravr/c6999e5cc2a302b5c7ada0cd464b7baa to your computer and use it in GitHub Desktop.
Save saravr/c6999e5cc2a302b5c7ada0cd464b7baa to your computer and use it in GitHub Desktop.
Date Utils in Kotlin
import android.text.format.DateUtils
fun getDurationString(secondsElapsed: Long): String {
val hours = secondsElapsed / 3600
val minutes = (secondsElapsed % 3600) / 60
val seconds = secondsElapsed % 60
return if (hours > 0)
String.format("%02d:%02d:%02d", hours, minutes, seconds)
else
String.format("%02d:%02d", minutes, seconds)
}
fun getCurrentTimeInSeconds() = System.currentTimeMillis() / 1000
const val DAY_IN_SECONDS = DateUtils.DAY_IN_MILLIS / 1000
const val HOUR_IN_SECONDS = DateUtils.HOUR_IN_MILLIS / 1000
const val MINUTE_IN_SECONDS = DateUtils.MINUTE_IN_MILLIS / 1000
fun getElapsedTimeString(timestamp: Long): String {
var delta = getCurrentTimeInSeconds() - timestamp
if (delta < 0) {
return ""
}
val days = delta / DAY_IN_SECONDS
delta -= (days * DAY_IN_SECONDS)
val hours = delta / HOUR_IN_SECONDS
delta -= (hours * HOUR_IN_SECONDS)
val minutes = delta / MINUTE_IN_SECONDS
delta -= (minutes * MINUTE_IN_SECONDS)
val seconds = delta
val dateStr = StringBuilder()
if (days == 0L) {
if (hours == 0L) {
if (minutes == 0L) {
if (seconds < 10L) {
dateStr.append("now")
} else {
dateStr.append(seconds).append("s")
}
} else {
dateStr.append(minutes).append("m")
}
} else {
dateStr.append(hours).append("h")
}
} else if (days < 7) {
dateStr.append(days).append("d")
} else if (days in 7..31) {
val weeks = days / 7
dateStr.append(weeks).append("w")
} else if (days in 32..365) {
val months = days / 7 / 4
dateStr.append(months).append("mo")
} else {
val years = days / 365
dateStr.append(years).append("y")
}
return dateStr.toString()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment