java.text.ParseException: Непарсируемая дата: «Чт 19 января 2012 08:00 PM» - PullRequest
7 голосов
/ 18 января 2012

Я бы хотел разобрать дату.Моя Струнная дата: «Чт 19 января 2012 08:00 PM».И мой код для анализа:

format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa");
this.settDate(new Timestamp((format.parse(sDate)).getTime()));

Однако, это не работает.Как мне разобрать эту дату?

Полный метод:

public void saveTask(int iDevice, String description, String sDate) throws ParseException {
    format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa");
    this.setiDeviceId(iDevice);
    this.setsDescription(description);
    this.settDate(new Timestamp((format.parse(sDate)).getTime()));
    DatabaseManager.save(this);
}

И исключение:

java.text.ParseException: Unparseable date: "Thu Jan 19 2012 01:00 AM"

Отладочная картинка:

enter image description here

Спасибо!

Ответы [ 5 ]

17 голосов
/ 18 января 2012

Попробуйте код ниже ... Проверено и работает

    String dateStr = "Thu Jan 19 2012 01:00 PM";
    DateFormat readFormat = new SimpleDateFormat( "EEE MMM dd yyyy hh:mm aaa");

    DateFormat writeFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
    Date date = null;
    try {
       date = readFormat.parse( dateStr );
    } catch ( ParseException e ) {
        e.printStackTrace();
    }

    String formattedDate = "";
    if( date != null ) {
    formattedDate = writeFormat.format( date );
    }

    System.out.println(formattedDate);

Вывод 2012-01-19 13:00:00

Ура!Рад помочь !!!

5 голосов
/ 18 января 2012

Попробуйте установить локаль, например, США, в этом случае:

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm aaa",Locale.US);
format.parse("Thu Jan 19 2012 08:00 PM");
3 голосов
/ 18 января 2012

Какая у вас локаль по умолчанию?Поскольку строка даты написана на английском языке, попробуйте выполнить синтаксический анализ с использованием локали США:

DateFormat format = new SimpleDateFormat("EEE MMM dd yyyy hh:mm a", Locale.US);
0 голосов
/ 10 июля 2018

// убедитесь, что ваша строковая дата и шаблон DateFormat совпадают; // например, у вас есть String date = "2018/07/10 10:00:00";

                            DateFormat format = new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss");

                            // now makesure format has same pattern in this case ""yyyy/MM/dd HH:mm:ss"
0 голосов
/ 18 января 2012

Убедитесь, что это значение действительно дошло до этого вызова. Поместите точку останова прямо в этой строке и дважды проверьте фактическое значение.

Как вы можете видеть здесь http://ideone.com/MBzYn код работает отлично.

...