转换日期时间为“2012年4月6日”格式

时间:2012-04-25 13:35:12

标签: android

我想在日期字符串的“6th 7th .. etc。”中获得

我试过SimpleDateFormater&也可以试试DateFormatSymbols。我没有得到String Required。

有解决方法吗?

9 个答案:

答案 0 :(得分:22)

SimpleDateFormat format = new SimpleDateFormat("d");
String date = format.format(new Date());

if(date.endsWith("1") && !date.endsWith("11"))
    format = new SimpleDateFormat("EE MMM d'st', yyyy");
else if(date.endsWith("2") && !date.endsWith("12"))
    format = new SimpleDateFormat("EE MMM d'nd', yyyy");
else if(date.endsWith("3") && !date.endsWith("13"))
    format = new SimpleDateFormat("EE MMM d'rd', yyyy");
else 
    format = new SimpleDateFormat("EE MMM d'th', yyyy");

String yourDate = format.format(new Date());

试试这个, 这看起来像一些静态,但工作正常......

答案 1 :(得分:6)

你走了:

/**
 * Converts Date object into string format as for e.g. <b>April 25th, 2012</b>
 * @param date date object
 * @return string format of provided date object
 */
public static String getCustomDateString(Date date){
    SimpleDateFormat tmp = new SimpleDateFormat("MMMM d");

    String str = tmp.format(date);
    str = str.substring(0, 1).toUpperCase() + str.substring(1);

    if(date.getDate()>10 && date.getDate()<14)
        str = str + "th, ";
    else{
        if(str.endsWith("1")) str = str + "st, ";
        else if(str.endsWith("2")) str = str + "nd, ";
        else if(str.endsWith("3")) str = str + "rd, ";
        else str = str + "th, ";
    }

    tmp = new SimpleDateFormat("yyyy");
    str = str + tmp.format(date);

    return str;
}

<强>示例

Log.i("myDate", getCustomDateString(new Date()));
  

2012年4月25日

答案 2 :(得分:1)

您可以继承SimpleDateFormat并覆盖格式,并使用一个简单的实用程序函数,它接受一个String或Integer并返回一个附加了“nd”或“st”的字符串......类似于:

if (initialDate.equals("2") || initialDate.equals("22"){
    return initialDate += "nd";
}else if {initialDate.equals("3") || initialDate.equals("23"){
    return initialDate += "rd";
}else{
    return initialDate += "th";
}

答案 3 :(得分:1)

可以使用以下方法获取传递给它的日期的格式化字符串。它将使用Java中的SimpleDateFormat将日期格式化为1st,2nd,3rd,4th ..例如: - 2015年9月1日

public String getFormattedDate(Date date){
        Calendar cal=Calendar.getInstance();
        cal.setTime(date);
        //2nd of march 2015
        int day=cal.get(Calendar.DATE);

        switch (day % 10) {
        case 1:  
            return new SimpleDateFormat("MMMM d'st', yyyy").format(date);
        case 2:  
            return new SimpleDateFormat("MMMM d'nd', yyyy").format(date);
        case 3:  
            return new SimpleDateFormat("MMMM d'rd', yyyy").format(date);
        default: 
            return new SimpleDateFormat("MMMM d'th', yyyy").format(date);
    }

答案 4 :(得分:0)

下面的代码很有用;

gql

你将获得2018年6月6日。

答案 5 :(得分:0)

    public static String getDateText(String day){
      if(day.equalsIgnoreCase("1") || day.equalsIgnoreCase("21") || 
        day.equalsIgnoreCase("31")){
        return "st";
      }else if(day.equalsIgnoreCase("2") || day.equalsIgnoreCase("22")){
        return "nd";
      }else if(day.equalsIgnoreCase("3") || day.equalsIgnoreCase("23")){
        return "rd";
      }else {
        return "th";
      }
    }

答案 6 :(得分:0)

对于任何想要使用Kotlin的完整静态SimpleDateFormat版本的人:

class Utils {

    companion object {
        private val dateFormat = SimpleDateFormat("MMM d, yyyy", Locale.getDefault())

       fun formatDate(date: Date): String {
            val oi = getOrdinalIndicator(date)
            return dateFormat.apply {
                applyPattern("MMM d'$oi', yyyy")
            }.format(date)
        }

        private fun getOrdinalIndicator(date: Date): String {
            val day = newCalendar(date).get(Calendar.DAY_OF_MONTH)

            if (day == 11 || day == 12 || day == 13) {
                return "th"
            }

            return when (day % 10) {
                1 -> "st"
                2 -> "nd"
                3 -> "rd"
                else -> "th"
            }
        }

        private fun newCalendar(date: Date): Calendar {
            return Calendar.getInstance().apply {
                time = date
            }
        }
    }
}

答案 7 :(得分:0)

这是用 kotlin 编写的工作代码。

         /**
         * Format the given date like Today, Tomorrow, Yesterday, 11th Nov, 2nd Dec etc.
         */
        fun getFormattedDay(context: Context, strFromDate: String, strFromDateFormat: String) : String
        {
            var formattedDay = ""
            val fromDateFormatter = SimpleDateFormat(strFromDateFormat, Locale.UK)
            val fromDate = fromDateFormatter.parse(strFromDate)

            val tty = getTTYDay(context, strFromDate, strFromDateFormat)
            if (!tty.isEmpty()) {
                return tty
            }

            val dayFormatter = Constants.SIMPLE_DATE_FORMAT_D
            val monthAndYearFormatter = Constants.SIMPLE_DATE_FORMAT_MMM_YYYY

            formattedDay = dayFormatter.format(fromDate)
            val dayOfMonth = formattedDay.toInt()

            if (dayOfMonth in 11..13) {
                formattedDay += "th, "
            }
            else {
                if (formattedDay.endsWith("1")) {
                    formattedDay += "st, "
                }
                else if (formattedDay.endsWith("2")) {
                    formattedDay += "nd, "
                }
                else if (formattedDay.endsWith("3")) {
                    formattedDay += "rd, "
                }
                else {
                    formattedDay += "th, "
                }
            }

            formattedDay += monthAndYearFormatter.format(fromDate)

            return formattedDay
        }

        /**
         * This method returns today, tomorrow or yesterday or else empty string.
         */
        fun getTTYDay(context: Context, strFromDate: String, strFromDateFormat: String) : String
        {
            val fromDateFormatter = SimpleDateFormat(strFromDateFormat, Locale.UK)
            return if (strFromDate == fromDateFormatter.format(Date())) {
                context.getString(R.string.today)
            }
            else if (strFromDate == fromDateFormatter.format(getYesterdayDate())) {
                context.getString(R.string.yesterday)
            }
            else if (strFromDate == fromDateFormatter.format(getTomorrowDate())) {
                context.getString(R.string.tomorrow)
            }
            else {
                ""
            }
        }

        fun getYesterdayDate(): Date {
            val cal = Calendar.getInstance()
            cal.add(Calendar.DATE, -1)
            return cal.time
        }

        fun getTomorrowDate(): Date {
            val cal = Calendar.getInstance()
            cal.add(Calendar.DATE, 1)
            return cal.time
        }

此方法也可以作为静态方法调用。如何使用?

一样调用此方法
  

getFormattedDay(context !!,“ 16/11/2018”,“ dd / MM / yyyy”)

您将得到如下结果:

  

今天或明天或昨天或2018年11月16日

希望这对您有所帮助。如果您今天不想要,明天就删除getTTYDay方法调用。

使用的不同日期格式类型:

        val DATE_FORMAT_DD_MM_YYYY_1 = "dd/MM/yyyy"
        val DATE_FORMAT_DD_MM_YYYY_2 = "dd MM yyyy"
        val DATE_FORMAT_DD_MMM_YYYY_1 = "dd MMM yyyy"
        val DATE_FORMAT_MMM_YYYY_1 = "MMM yyyy"
        val DATE_FORMAT_D_1 = "d"

        val SIMPLE_DATE_FORMAT_DD_MM_YYYY = SimpleDateFormat(DATE_FORMAT_DD_MM_YYYY_2, Locale.UK)
        val SIMPLE_DATE_FORMAT_DD_MMM_YYYY = SimpleDateFormat(DATE_FORMAT_DD_MMM_YYYY_1, Locale.UK)
        val SIMPLE_DATE_FORMAT_MMM_YYYY = SimpleDateFormat(DATE_FORMAT_MMM_YYYY_1, Locale.UK)
        val SIMPLE_DATE_FORMAT_D = SimpleDateFormat(DATE_FORMAT_D_1, Locale.UK)

答案 8 :(得分:0)

科特林版本-更新代码

     fun getFormattedDate(dateStr: String):String{
        try {
            var format = SimpleDateFormat("MM/dd/yyyy")//change your timeformat
            val date1 = format.parse(dateStr)
            var date = format.format(date1)

            if (date.startsWith("1") && !date.startsWith("11"))
                format = SimpleDateFormat("d'st' MMM, yyyy")
            else if (date.startsWith("2") && !date.startsWith("12"))
                format = SimpleDateFormat("d'nd' MMM, yyyy")
            else if (date.startsWith("3") && !date.startsWith("13"))
                format = SimpleDateFormat("d'rd' MMM, yyyy")
            else
                format = SimpleDateFormat("d'th' MMM, yyyy")

            val yourDate = format.format(date1)
            return yourDate
        }
        catch (ex: Exception){
            return dateStr
        }
    }
相关问题