• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package leakcanary.internal.activity.ui
2 
3 import android.content.Context
4 import android.text.format.DateUtils
5 
6 internal object TimeFormatter {
7 
8   private const val MINUTE_MILLIS = 60 * 1000
9   private const val TWO_MINUTES_MILLIS = 2 * MINUTE_MILLIS
10   private const val FIFTY_MINUTES_MILLIS = 50 * MINUTE_MILLIS
11   private const val NINETY_MINUTES_MILLIS = 90 * MINUTE_MILLIS
12   private const val HOUR_MILLIS = 60 * MINUTE_MILLIS
13   private const val DAY_MILLIS = 24 * HOUR_MILLIS
14   private const val TWO_DAYS_MILLIS = 48 * HOUR_MILLIS
15 
formatTimestampnull16   fun formatTimestamp(
17     context: Context,
18     timestampMillis: Long
19   ): String {
20     // Based on https://stackoverflow.com/a/13018647
21     val nowMillis = System.currentTimeMillis()
22     return when (val diff = nowMillis - timestampMillis) {
23       in 0..MINUTE_MILLIS -> {
24         "just now"
25       }
26       in MINUTE_MILLIS..TWO_MINUTES_MILLIS -> {
27         "a minute ago"
28       }
29       in TWO_MINUTES_MILLIS..FIFTY_MINUTES_MILLIS -> {
30         "${diff / MINUTE_MILLIS} minutes ago"
31       }
32       in FIFTY_MINUTES_MILLIS..NINETY_MINUTES_MILLIS -> {
33         "an hour ago"
34       }
35       in NINETY_MINUTES_MILLIS..DAY_MILLIS -> {
36         "${diff / HOUR_MILLIS} hours ago"
37       }
38       in DAY_MILLIS..TWO_DAYS_MILLIS -> {
39         "yesterday"
40       }
41       else -> {
42         DateUtils.formatDateTime(
43           context, timestampMillis,
44           DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_DATE
45         )
46       }
47     }
48   }
49 }