为什么我会获得Unparseable日期异常?

时间:2014-03-31 08:43:31

标签: java string simpledateformat

    String DATE_FORMAT = "`";
    Object value = null;
    String date = "2014-02-02";

    try {
        value = new SimpleDateFormat(DATE_FORMAT).parse(date);
        System.out.println(value);
    } catch (ParseException e) {
        System.out.println(e.getMessage());
    }
正如我在java文档中看到的那样,这个DATE_FORMAT将避免解释,也许我没有正确理解它。

所以我做错了什么?

2 个答案:

答案 0 :(得分:2)

我想你提到这个:

  

日期和时间格式由日期和时间模式字符串指定。   在日期和时间模式字符串中,从“A”到“Z”的不带引号的字母   从'a'到'z'被解释为代表的模式字母   日期或时间字符串的组成部分。可以使用引用文本   单引号(')以避免解释。 “''代表单身   引用。不解释所有其他字符;他们只是被复制了   在格式化期间输入到输出字符串或与输入匹配   解析时的字符串。

这意味着您可以避免解释模式的文本,为您要避免的部分添加单引号。

例如,如果我使用文本获取字符串日期,我希望不要将其解释为日期的一部分,我可以执行以下操作:

SimpleDateFormat df = new SimpleDateFormat("'mydate' yyyy-MM-dd HH:mm:ss");
try {
    df.parse("mydate 2014-04-01 12:30:00");
} catch (ParseException e) {
    e.printStackTrace();
}

这不会给出任何例外。另一方面,这将:

  SimpleDateFormat df = new SimpleDateFormat("'mydate' yyyy-MM-dd HH:mm:ss");
    try {
        df.parse("mydates 2014-04-01 12:30:00"); //check the additional s
    } catch (ParseException e) {
        e.printStackTrace();
    }

简而言之,我认为你错过了解释规范。

更多信息:How to escape single quote in java's SimpleDateFormat

答案 1 :(得分:1)

尝试,

String DATE_FORMAT = "yyyy-MM-dd";
Date value  = null;
String date = "2014-02-02";

try {
    value = new SimpleDateFormat(DATE_FORMAT).parse(date);
    System.out.println(value);
} catch (ParseException e) {
    System.out.println(e.getMessage());
}

Read