mirror of
https://github.com/vector-im/element-android.git
synced 2024-11-16 02:05:06 +08:00
Merge pull request #1803 from czeidler/relative-date-time-formatter
Relative date time formatter #822
This commit is contained in:
commit
98aeee9c5a
@ -9,6 +9,7 @@ Improvements 🙌:
|
|||||||
|
|
||||||
Bugfix 🐛:
|
Bugfix 🐛:
|
||||||
- Fix invisible toolbar (Status.im theme) (#1746)
|
- Fix invisible toolbar (Status.im theme) (#1746)
|
||||||
|
- Fix relative date time formatting (#822)
|
||||||
|
|
||||||
Translations 🗣:
|
Translations 🗣:
|
||||||
- Add PlayStore description resources in the Triple-T format, to let Weblate handle them
|
- Add PlayStore description resources in the Triple-T format, to let Weblate handle them
|
||||||
|
@ -21,8 +21,24 @@ import android.text.format.DateUtils
|
|||||||
import im.vector.app.core.resources.LocaleProvider
|
import im.vector.app.core.resources.LocaleProvider
|
||||||
import org.threeten.bp.LocalDateTime
|
import org.threeten.bp.LocalDateTime
|
||||||
import org.threeten.bp.format.DateTimeFormatter
|
import org.threeten.bp.format.DateTimeFormatter
|
||||||
|
import java.util.Calendar
|
||||||
|
import java.util.Date
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the timestamp for the start of the day of the provided time.
|
||||||
|
* For example, for the time "Jul 21, 11:11" the start of the day: "Jul 21, 00:00" is returned.
|
||||||
|
*/
|
||||||
|
fun startOfDay(time: Long): Long {
|
||||||
|
val calendar = Calendar.getInstance()
|
||||||
|
calendar.time = Date(time)
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0)
|
||||||
|
calendar.set(Calendar.MINUTE, 0)
|
||||||
|
calendar.set(Calendar.SECOND, 0)
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0)
|
||||||
|
return calendar.time.time
|
||||||
|
}
|
||||||
|
|
||||||
class VectorDateFormatter @Inject constructor(private val context: Context,
|
class VectorDateFormatter @Inject constructor(private val context: Context,
|
||||||
private val localeProvider: LocaleProvider) {
|
private val localeProvider: LocaleProvider) {
|
||||||
|
|
||||||
@ -41,15 +57,23 @@ class VectorDateFormatter @Inject constructor(private val context: Context,
|
|||||||
return messageDayFormatter.format(localDateTime)
|
return messageDayFormatter.format(localDateTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formats a localized relative date time for the last 2 days, e.g, "Today, HH:MM", "Yesterday, HH:MM" or
|
||||||
|
* "2 days ago, HH:MM".
|
||||||
|
* For earlier timestamps the absolute date time is returned, e.g. "Month Day, HH:MM".
|
||||||
|
*
|
||||||
|
* @param time the absolute timestamp [ms] that should be formatted relative to now
|
||||||
|
*/
|
||||||
fun formatRelativeDateTime(time: Long?): String {
|
fun formatRelativeDateTime(time: Long?): String {
|
||||||
if (time == null) {
|
if (time == null) {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
val now = System.currentTimeMillis()
|
||||||
return DateUtils.getRelativeDateTimeString(
|
return DateUtils.getRelativeDateTimeString(
|
||||||
context,
|
context,
|
||||||
time,
|
time,
|
||||||
DateUtils.DAY_IN_MILLIS,
|
DateUtils.DAY_IN_MILLIS,
|
||||||
2 * DateUtils.DAY_IN_MILLIS,
|
now - startOfDay(now - 2 * DateUtils.DAY_IN_MILLIS),
|
||||||
DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_TIME
|
DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_TIME
|
||||||
).toString()
|
).toString()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user