#android #datetime #kotlin
#Android #дата и время #kotlin
Вопрос:
Я пытаюсь работать над отображением дат и сталкиваюсь с проблемой. Итак, у меня есть этот textview
в моем классе адаптера, и я хочу, чтобы отображаемое время было в 3 разных форматах, скажем, например, когда его последние 24 часа указывают дату, например Saturday
, если он очень старый, просто отображайте дату 02/9/2021
, и если день не закончился, просто отображайте время 12:00am
. моя проблема в том, как мне добиться этого наAndroid использует Kotlin? вот пример изображения, которое я получил
Комментарии:
1. Я бы сохранил все в простом формате даты. В то же время, не имея часов на другие даты, не имеет особого смысла сохранять часы, где есть часы, просто укажите сегодняшнюю дату. Для тех, у кого есть день недели, я бы сделал цикл в обратном направлении, начиная с сегодняшней даты, и как только день недели совпадает, я бы вышел из цикла с датой. Пока у вас есть дата, оставьте ее такой.
Ответ №1:
Это просто просто найдите разницу между сейчас и вашей датой и используйте SimpleDateFormat для форматирования даты
fun getDate(date:Long){
val nowCal = Calendar.getInstance()
val dateCal = Calendar.getInstance().apply {
//just for test, replace with your date timestamp
timeInMillis = TimeUnit.DAYS.toMillis(9)
}
val nowDay = TimeUnit.MILLISECONDS.toDays(nowCal.timeInMillis)
val dateDay = TimeUnit.MILLISECONDS.toDays(dateCal.timeInMillis)
when {
(dateDay - nowDay) <= 1L -> {
val formatter = SimpleDateFormat("hh:mm a")
val dateStr = formatter.format(dateCal.time)
println(dateStr)
}
(dateDay - nowDay) <= 6L -> {
val dateStr = dateCal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.ENGLISH)
println(dateStr)
}
else ->{
val formatter = SimpleDateFormat("M/d/yy")
val dateStr = formatter.format(dateCal.time)
println(dateStr)
}
}
}
Комментарии:
1. Однако я заметил, что, поскольку у меня есть один textview, он меняет время для каждой новой записи. Что бы вы сделали в этом случае?