Как отобразить другой формат даты / времени в textview с использованием hr, day и calender

#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, он меняет время для каждой новой записи. Что бы вы сделали в этом случае?