Created
September 30, 2021 19:27
-
-
Save saravr/c6999e5cc2a302b5c7ada0cd464b7baa to your computer and use it in GitHub Desktop.
Date Utils in Kotlin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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