【问题标题】:Why do i get Unparseable date exception ?为什么我得到不可解析的日期异常?
【发布时间】:2014-03-31 08:43:31
【问题描述】:
    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 将避免解释,也许我没有正确理解它。

那我做错了什么?

【问题讨论】:

  • 文档中的什么地方说的?
  • 是的,我想我没明白,这是什么意思:文本可以使用单引号 (') 引用以避免解释。

标签: java string simpledateformat


【解决方案1】:

我猜你指的是这个:

日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从 '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

【讨论】:

  • 是的,我明白我的错误在哪里,感谢您的详细解释!
【解决方案2】:

试试,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 2019-12-04
    • 2014-09-30
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多