2015-04-24 6 views
3

Я сохраняю текущую дату в SQLite db с помощью переменной CURRENT_DATE. Я обнаружил, что используется формат даты yyyy-mm-dd. Я хочу, чтобы разобрать дату в коде, но я получаю эту ошибку:java.lang.IllegalArgumentException: Ошибка анализа - ошибка формата даты?

java.lang.IllegalArgumentException: Parse error: at java.util.Date.parseError

Код показан ниже:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); 
    String formattedTaskDate = dateFormat.format(new Date(dateStoredAsStringFetchedFromDB)); 
    Date d = new Date(formattedTaskDate); 

На первом, я выборки дату из базы данных и хранить его в переменная String (поскольку дата хранится как TEXT в SQLite), а затем выполняю описанные выше операции, но получаю исключение как parseError.

Как я могу решить эту проблему?

+1

, пожалуйста, обратите внимание на мой обновленный ответ. – Cytus

ответ

1

Формат не так, попробуйте это:

String string = dateStoredAsStringFetchedFromDB; 
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date date = format.parse(string); 

Documentation.

0

Не могли бы вы вставить значение dateStoredAsStringFetchedFromDB в качестве возвращаемого из базы данных? Вероятно, что возвращаемое значение не соответствует формату yyyy-mm-dd.

Также обратите внимание, что из javadoc (https://developer.android.com/reference/java/text/SimpleDateFormat.html) шаблон «m» обозначает минуты, а не месяц, как вы, кажется, ожидаете.

2

Кажется, ваш формат даты неправильный. Следует отметить, что верхний регистр M используется для представления месяцев, а нижний регистр m используется в течение нескольких минут. Чтобы решить эту проблему, просто измените свой yyyy-mm-dd на yyy-MM-dd.

Теперь, если вы хотите изменить этот формат в будущем, вы можете сделать это, делая что-то вроде этого:

try { 
    DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date input = inputFormat.parse(date); 
    DateFormat outputFormat = new SimpleDateFormat(" EEEE MMMM-dd-yyyy ", Locale.ENGLISH); 
    String finaldate = outputFormat.format(input); 
      txtDate.setText(finaldate); <-- just an example of displaying the date 
    }catch (Exception ex) { 
      Alerts.CatchError(getBaseContext(), ex.toString()); 
    } 

Это будет отображать первоначально сохраненную дату 2015-04-25 12:08:34 (гггг-мм-дд чч: мм : ss) как Friday April-25-2015. Вы, конечно, можете изменить это и по своему вкусу, просто обратитесь к документации, которую Анкит любезно связывает для вас.