Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.12 KB | None | 0 0
  1. fun formatTime(context: Context,
  2.                europeanTimeFormat: Boolean = DateFormat.is24HourFormat(context),
  3.                relative: Long = System.currentTimeMillis(),
  4.                estimatedTime: Boolean = false,
  5.                time: Long
  6. ): String {
  7.     val current = (calendarsPool.acquire() ?: Calendar.getInstance()).apply { timeInMillis = relative }
  8.     val currentDay = current.get(Calendar.DAY_OF_MONTH)
  9.     val currentHourOfDay = current.get(Calendar.HOUR_OF_DAY)
  10.     val currentDayOfYear = current.get(Calendar.DAY_OF_YEAR)
  11.     val currentMinutes = current.get(Calendar.MINUTE)
  12.     val currentSeconds = current.get(Calendar.SECOND)
  13.     val currentYear = current.get(Calendar.YEAR)
  14.  
  15.     val requested = (calendarsPool.acquire() ?: Calendar.getInstance()).apply { timeInMillis = time }
  16.     val requestedAmPm = requested.get(Calendar.AM_PM)
  17.     val requestedDay = requested.get(Calendar.DAY_OF_MONTH)
  18.     val requestedHourOfDay = requested.get(Calendar.HOUR_OF_DAY)
  19.     val requestedDayOfYear = requested.get(Calendar.DAY_OF_YEAR)
  20.     val requestedYear = requested.get(Calendar.YEAR)
  21.     val requestedMinutes = requested.get(Calendar.MINUTE)
  22.     val requestedMinutesWithLeadingZeros = addLeadingZerosToTimePart(requestedMinutes)
  23.     val requestedSeconds = requested.get(Calendar.SECOND)
  24.     val requestedHourWithLeadingZeros = addLeadingZerosToTimePart(if (europeanTimeFormat) {
  25.         requestedHourOfDay
  26.     } else {
  27.         requested.get(Calendar.HOUR)
  28.     })
  29.  
  30.     calendarsPool.release(current)
  31.     calendarsPool.release(requested)
  32.  
  33.  
  34.     if (estimatedTime &&
  35.             currentDayOfYear == requestedDayOfYear &&
  36.             currentHourOfDay == requestedHourOfDay &&
  37.             currentYear == requestedYear
  38.     ) {
  39.         if (currentMinutes - requestedMinutes == 0) {
  40.             if (currentSeconds > requestedSeconds) {
  41.                 return with(context.resources) {
  42.                     getString(R.string.time_ago, getQuantityString(R.plurals.seconds, currentSeconds - requestedSeconds))
  43.                 }
  44.             } else if (currentSeconds == requestedSeconds) {
  45.                 return context.getString(R.string.just)
  46.             }
  47.         } else if (currentMinutes > requestedMinutes) {
  48.             return with(context.resources) {
  49.                 getString(R.string.time_ago, getQuantityString(R.plurals.minutes, currentMinutes - requestedMinutes))
  50.             }
  51.         }
  52.     }
  53.  
  54.     val requestedTime = if (europeanTimeFormat) {
  55.         context.getString(R.string.time_mask_24_hours, requestedHourWithLeadingZeros, requestedMinutesWithLeadingZeros)
  56.     } else {
  57.         context.getString(R.string.time_mask_12_hours, requestedHourWithLeadingZeros, requestedMinutesWithLeadingZeros, if (requestedAmPm == 1) {
  58.             context.getString(R.string.pm)
  59.         } else {
  60.             context.getString(R.string.am)
  61.         })
  62.     }
  63.  
  64.     return if (currentDay - requestedDay == 1) {
  65.         context.getString(R.string.yesterday_mask, requestedTime)
  66.     } else if (currentDay - requestedDay == -1) {
  67.         context.getString(R.string.tomorrow_mask, requestedTime)
  68.     } else {
  69.         ""
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement