3

我使用变量 CURRENT_DATE 将当前日期存储在 SQLite db 中。我发现使用的日期格式是yyyy-mm-dd相同的。我想解析代码中的日期,但出现此错误:

java.lang.IllegalArgumentException:解析错误:在 java.util.Date.parseError

代码如下所示:

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

首先,我从数据库中获取日期并将其存储在一个字符串变量中(因为日期在 SQLite 中存储为 TEXT),然后我正在执行上述操作,但我得到的异常为parseError

我该如何解决这个问题?

4

3 回答 3

2

看来你的日期格式是错误的。请注意,大写字母M用于表示月份,小写字母m用于表示分钟。要解决这个问题,只需将您的更改yyyy-mm-ddyyy-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这会将(yyyy-MM-dd HH:mm:ss)的初始存储日期显示为Friday April-25-2015. 当然,您也可以根据自己的喜好进行更改,只需参考 Ankit 为您提供的文档即可。

于 2015-04-24T16:10:40.657 回答
1

格式不对,试试这个:

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

文档

于 2015-04-24T16:03:23.650 回答
0

您能否粘贴dateStoredAsStringFetchedFromDB从数据库返回的值?返回值可能与 yyyy-mm-dd 格式不匹配。

另请注意,从 javadoc ( https://developer.android.com/reference/java/text/SimpleDateFormat.html ) 中,“m”模式表示分钟而不是您似乎期望的月份。

于 2015-04-24T16:09:24.137 回答