Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fun formatTime(context: Context,
- europeanTimeFormat: Boolean = DateFormat.is24HourFormat(context),
- relative: Long = System.currentTimeMillis(),
- estimatedTime: Boolean = false,
- time: Long
- ): String {
- val current = (calendarsPool.acquire() ?: Calendar.getInstance()).apply { timeInMillis = relative }
- val currentDay = current.get(Calendar.DAY_OF_MONTH)
- val currentHourOfDay = current.get(Calendar.HOUR_OF_DAY)
- val currentDayOfYear = current.get(Calendar.DAY_OF_YEAR)
- val currentMinutes = current.get(Calendar.MINUTE)
- val currentSeconds = current.get(Calendar.SECOND)
- val currentYear = current.get(Calendar.YEAR)
- val requested = (calendarsPool.acquire() ?: Calendar.getInstance()).apply { timeInMillis = time }
- val requestedAmPm = requested.get(Calendar.AM_PM)
- val requestedDay = requested.get(Calendar.DAY_OF_MONTH)
- val requestedHourOfDay = requested.get(Calendar.HOUR_OF_DAY)
- val requestedDayOfYear = requested.get(Calendar.DAY_OF_YEAR)
- val requestedYear = requested.get(Calendar.YEAR)
- val requestedMinutes = requested.get(Calendar.MINUTE)
- val requestedMinutesWithLeadingZeros = addLeadingZerosToTimePart(requestedMinutes)
- val requestedSeconds = requested.get(Calendar.SECOND)
- val requestedHourWithLeadingZeros = addLeadingZerosToTimePart(if (europeanTimeFormat) {
- requestedHourOfDay
- } else {
- requested.get(Calendar.HOUR)
- })
- calendarsPool.release(current)
- calendarsPool.release(requested)
- if (estimatedTime &&
- currentDayOfYear == requestedDayOfYear &&
- currentHourOfDay == requestedHourOfDay &&
- currentYear == requestedYear
- ) {
- if (currentMinutes - requestedMinutes == 0) {
- if (currentSeconds > requestedSeconds) {
- return with(context.resources) {
- getString(R.string.time_ago, getQuantityString(R.plurals.seconds, currentSeconds - requestedSeconds))
- }
- } else if (currentSeconds == requestedSeconds) {
- return context.getString(R.string.just)
- }
- } else if (currentMinutes > requestedMinutes) {
- return with(context.resources) {
- getString(R.string.time_ago, getQuantityString(R.plurals.minutes, currentMinutes - requestedMinutes))
- }
- }
- }
- val requestedTime = if (europeanTimeFormat) {
- context.getString(R.string.time_mask_24_hours, requestedHourWithLeadingZeros, requestedMinutesWithLeadingZeros)
- } else {
- context.getString(R.string.time_mask_12_hours, requestedHourWithLeadingZeros, requestedMinutesWithLeadingZeros, if (requestedAmPm == 1) {
- context.getString(R.string.pm)
- } else {
- context.getString(R.string.am)
- })
- }
- return if (currentDay - requestedDay == 1) {
- context.getString(R.string.yesterday_mask, requestedTime)
- } else if (currentDay - requestedDay == -1) {
- context.getString(R.string.tomorrow_mask, requestedTime)
- } else {
- ""
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement