Как конвертировать форматы даты?

Итак, у меня есть эта строка: «Вт, 15 апреля, 00:00:00 IDT 2014» или «15 апреля 2014 года» после того, как я изменил ее, разделив ее. И я хочу преобразовать его в этот формат: «гггг-мм-дд», но когда я получаю это сообщение:

java.text.ParseException: Unparseable date: "Apr 15 2014"

Вот мой полный код:

DateFormat or=new SimpleDateFormat("MMM d yyyy");
            DateFormat tr=new SimpleDateFormat("yyyy-MM-dd");
           String str="Apr 15 2014";

            System.out.println(str);
            //String strs[]=str.split(" ");
            //String newDay=strs[1]+" "+strs[2]+" "+strs[5];
            //System.out.println(newDay);
            try {
                Date d1=or.parse(str);
                System.out.println(d1);
            } catch (ParseException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

Спасибо помощникам :)


person Dor Cohen    schedule 09.04.2014    source источник
comment
Вот решение http://stackoverflow.com/questions/14039062/how-to-convert-date-in-to-yyyy-mm-dd-format   -  person Himanshu    schedule 09.04.2014
comment
Не используйте раздельный поиск формата   -  person Ran Adler    schedule 09.04.2014
comment
Где вы его на самом деле конвертируете? У меня разбор работает нормально, печатает правильную дату (Tue Apr 15 00:00:00 CEST 2014). После добавления System.out.println(tr.format(d1)); в ваш try-catch он выводит правильный результат: 2014-04-15.   -  person Sebastian Höffner    schedule 09.04.2014


Ответы (3)


Значение поля месяца во входной строке может не совпадать со значением по умолчанию Locale. Пытаться

DateFormat format = new SimpleDateFormat("MMM d yyyy", Locale.ENGLISH);
...
Date date = format.parse(str);

Примечание. Вместо того, чтобы манипулировать исходным String, его можно было бы проанализировать напрямую с помощью

DateFormat format = 
    new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
person Reimeus    schedule 09.04.2014
comment
да отлично работает!! благодарить :) - person Dor Cohen; 09.04.2014

код:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(todaysDate);
person gstackoverflow    schedule 09.04.2014

Я сделал следующее изменение в вашем коде:

        **DateFormat or = new SimpleDateFormat("MMM dd yyyy");**
    new SimpleDateFormat("yyyy-MM-dd");
    String str = "Apr 15 2014";

    System.out.println(str);
    //String strs[]=str.split(" ");
    //String newDay=strs[1]+" "+strs[2]+" "+strs[5];
    //System.out.println(newDay);
    try {
        Date d1 = or.parse(str);
        System.out.println(d1);
    } catch (ParseException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

И я получил следующий вывод:

Apr 15 2014

Tue Apr 15 00:00:00 BST 2014

person user2881767    schedule 09.04.2014