【问题标题】:How to display different date/time format in textview using hr, day and calender如何使用小时、日和日历在文本视图中显示不同的日期/时间格式
【发布时间】:2021-02-14 03:07:48
【问题描述】:

我正在努力显示日期,但我遇到了挑战。所以我在我的适配器类中有一个textview,我希望显示的时间以 3 种不同的格式显示,例如,当它过去 24 小时说日期时,例如Saturday,如果它很旧,只显示日期02/9/2021,如果一天还没有结束,只是显示时间12:00am 我的问题是如何使用 Kotlin 在 Android 上实现这一点?这是我得到的示例图像

【问题讨论】:

  • 我会以简单的日期格式保存所有内容。在此期间没有其他日期的小时数,保存小时数没有多大意义,因为只有今天日期的小时数。对于那些有星期几的人,我会从今天的日期开始向后循环,一旦星期几重合,我就会退出带有日期的循环。当你有日期的时候,就这样吧。

标签: android datetime kotlin


【解决方案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)
        }
    }    
}

【讨论】:

  • 我注意到,由于我有一个文本视图,它正在改变每个新条目的时间。在这种情况下你会怎么做?
猜你喜欢
  • 2018-11-15
  • 2012-11-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多