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

Android 将日期时间转换为“时间”;2012年4月6日“;格式,android,Android,我想在日期字符串的“6th 7th..etc.”中获取日期 我试过了,也试过了。我不需要字符串 有什么解决方法吗?您可以对格式进行子类化和重写,并使用一个简单的实用程序函数,该函数接收字符串或整数,并返回附加了“nd”或“st”的字符串……类似于: if (initialDate.equals("2") || initialDate.equals("22"){ return initialDate += "nd"; }else if {initialDate.equals("3") ||

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

我试过了,也试过了。我不需要字符串

有什么解决方法吗?

您可以对格式进行子类化和重写,并使用一个简单的实用程序函数,该函数接收字符串或整数,并返回附加了“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";
}
试试这个, 这看起来像是静态的,但工作正常…

给你:

/**
 * 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;
}
2012年4月25日


可以使用以下方法获取传递给它的日期的格式化字符串。它会将日期格式化为1、2、3、4。。在Java中使用SimpleDataFormat。例如: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);
    }

下面的代码可以很有用

  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  Date date1 = format.parse("2018-06-06");
  String date = format.format(date1);

  if(date.endsWith("01") && !date.endsWith("11"))
    format = new SimpleDateFormat("d'st' MMM, yyyy");

  else if(date.endsWith("02") && !date.endsWith("12"))
    format = new SimpleDateFormat("d'nd' MMM, yyyy");

  else if(date.endsWith("03") && !date.endsWith("13"))
    format = new SimpleDateFormat("d'rd' MMM, yyyy");

  else
    format = new SimpleDateFormat("d'th' MMM, yyyy");

String yourDate = format.format(date1);

您将获得2018年6月6日。

对于任何希望使用以下方式获得干净静态版本的用户:

    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";
      }
    }

下面是用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(上下文!!,“2018年11月16日”,“年/月/日”)

您将得到如下结果:

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

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

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

        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)

Kotlin版本-更新的代码

     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
        }
    }

使用Format()方法创建您自己的SimpleDataForter部分将通过一些逻辑实现,
'st',nd',th'
部分,因为没有任何日期修饰符自动处理它,就像在可能重复的3nd中给出的答案一样?可能需要解决:)第一,第二,第三,第四。。第五。。第六。。第七。。第八。。第九。。第十。。我也需要@瓦卡斯“th”真的!:)提示:最好创建一个静态方法,将
Date
对象作为参数,然后执行其中的所有逻辑,只返回所需的字符串格式,然后由我确认+1:)我没有时间处理我的,我正在跳槽并投票给BB专家。:)嘿,12号怎么样?或者第13条?它在第2条和第3条结束,所以它是有效的。根据第1条、第11条、第21条、第41条(州等),这不是准确的答案@waqaslam代码工作正常。@请尽可能避免。你也可以张贴更好的答案,然后我,如果你有。堆栈溢出对所有人都是开放的。提问者会接受你的回答,如果他/她同意的话。
         /**
         * 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
        }
        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)
     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
        }
    }