Преобразование yyyy-mm-dd в dd mm yyyy

Как конвертировать 2013-06-24 в 24 июня 2013? Я использую приведенный ниже код.

date1="2013-06-24";
SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy");

try{
date2 =  d.parse(date1);
}catch (ParseException e1) {
// TODO Auto-generated catch block
  e1.printStackTrace();
}  

Но я получаю эту ошибку: "java.text.ParseException: Непарная дата:" 2013-06-24 "(со смещением 4)"

Ответ 1

Вам нужны два экземпляра DateFormat: один для синтаксического анализа оригинала String, а другой для вывода того, который вы хотите.

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
DateFormat outputFormat = new SimpleDateFormat("dd MMM yyyy");
String inputDateStr="2013-06-24";
Date date = inputFormat.parse(inputDateStr);
String outputDateStr = outputFormat.format(date);

Ответ 2

См. первую проблему: вы используете разные разделители для String и Date. Таким образом, либо вы делаете "2013-06-24" до "2013 06 24" в String, либо делаете новый SimpleDateFormat ( "dd MMM yyyy" ) для нового SimpleDateFormat ( "dd-MMM-yyyy" ).

И вторая проблема заключается в том, что вы не можете напрямую изменять формат, подобный этому, в String у вас есть формат даты года, поэтому сначала создайте объект Date с тем же форматом, что и изменение его в желаемый формат, как показано ниже:

date1="2013-06-24";

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

Date dt = format.parse(date1);

SimpleDateFormat your_format = new SimpleDateFormat("dd-MMM-yyyy");

date2 = your_format.format(dt);

Ответ 3

Измените

SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy");

с

SimpleDateFormat d= new SimpleDateFormat("yyyy-MM-dd");

вам нужно следовать шаблону date1. Затем вы можете отформатировать дату синтаксического анализа с помощью

new SimpleDateFormat("dd MMM yyyy");

Ответ 4

public String getStringFormatted(String datestring) {
    String format = "dd MM yyyy";
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
    return sdf.format(new Date(datestring.replaceAll("-", "/")));
}

Ответ 5

public String inputFormatget (String datestring1) {
        String format = "dd MM yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
        return sdf.format(new Date(datestring.replaceAll("-", "/")));
    }

    public String outFormatset (String datestring2) {
        String format = "dd MM yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.getDefault());
        return sdf.format(new Date(datestring.replaceAll("-", "/")));
    }

Ответ 6

public static String formateDateFromstring(String inputFormat, String outputFormat, String inputDate){

    Date parsed = null;
    String outputDate = "";

    SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, java.util.Locale.getDefault());
    SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, java.util.Locale.getDefault());

    try {
        parsed = df_input.parse(inputDate);
        outputDate = df_output.format(parsed);

    } catch (ParseException e) {
    }

    return outputDate;

}

String convertedDate = formateDateFromstring(
    "yyyy-MM-dd",
    "dd/MM/yyyy",
    datestring);

updateInsuranceEventFragmentBinding.edtdate.setText(convertedDate);