How do you format the day of the month to say “11th”, “21st” or “23rd” (ordinal indicator)?

后端 未结 20 884
逝去的感伤
逝去的感伤 2020-11-22 02:41

I know this will give me the day of the month as a number (11, 21, 23):

SimpleDateFormat formatDayOfMonth = new Simple         


        
20条回答
  •  南笙
    南笙 (楼主)
    2020-11-22 02:55

    In kotlin you can use like this

    fun changeDateFormats(currentFormat: String, dateString: String): String {
            var result = ""
            try {
                val formatterOld = SimpleDateFormat(currentFormat, Locale.getDefault())
                formatterOld.timeZone = TimeZone.getTimeZone("UTC")
    
                var date: Date? = null
    
                date = formatterOld.parse(dateString)
    
                val dayFormate = SimpleDateFormat("d", Locale.getDefault())
                var day = dayFormate.format(date)
    
                val formatterNew = SimpleDateFormat("hh:mm a, d'" + getDayOfMonthSuffix(day.toInt()) + "' MMM yy", Locale.getDefault())
    
                if (date != null) {
                    result = formatterNew.format(date)
                }
    
            } catch (e: ParseException) {
                e.printStackTrace()
                return dateString
            }
    
            return result
        }
    
    
        private fun getDayOfMonthSuffix(n: Int): String {
            if (n in 11..13) {
                return "th"
            }
            when (n % 10) {
                1 -> return "st"
                2 -> return "nd"
                3 -> return "rd"
                else -> return "th"
            }
        }
    

    set like this

      txt_chat_time_me.text = changeDateFormats("SERVER_DATE", "DATE")
    

提交回复
热议问题