Преобразование гггг-мм-дд в дд мм гггг

Как преобразовать 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: Unparseable date: «2013-06-24» (со смещением 4)»


person user1740281    schedule 26.06.2013    source источник


Ответы (4)


Вам нужно два экземпляра 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);
person duffymo    schedule 26.06.2013
comment
Довольно полезно. Никогда не думал об этом. Спасибо. Работал как Шарм - person Sriram Nadiminti; 27.04.2021

Смотрите, первая проблема заключается в том, что вы используете разные разделители для строк и дат. Итак, либо вы делаете «2013-06-24» в «2013 06 24» в строке, либо делаете новый SimpleDateFormat («дд МММ гггг») в новый SimpleDateFormat («дд-МММ-гггг»).

И вторая проблема заключается в том, что вы не можете напрямую изменить такой формат, в 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);
person Priyank Joshi    schedule 28.08.2013

Изменять

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

с

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

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

new SimpleDateFormat("dd MMM yyyy");
person Blackbelt    schedule 26.06.2013
comment
Я изменил его, но получаю этот ответ Пн, 24 июня, 00:00:00 IST 2013 - person user1740281; 26.06.2013

person    schedule
comment
Спасибо, что оставили этот ответ. Не могли бы вы обновить его с описанием/объяснением? - person I.T Delinquent; 07.08.2019