【问题标题】:ParseException - Can't figure out the right patternParseException - 无法找出正确的模式
【发布时间】:2014-07-17 20:01:12
【问题描述】:

我有以下字符串:dateToParse = "Fri May 16 23:59:59 BRT 2014",并希望使用 DateFormat 对其进行解析:

DateFormat dateFormat = new SimpleDateFormat(pattern, Locale.getDefault());
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/Sao_Paulo"));
cal.setTime(dateFormat.parse(dateToParse));

现在我正在尝试使用pattern = "EEE MMM dd HH:mm:ss z yyyy",但得到了这个例外:

java.text.ParseException: Unparseable date: "Fri May 16 23:59:59 BRT 2014" (at offset 0)

我无法弄清楚这种模式有什么问题,特别是在索引 0 处……知道我错过了什么吗?谢谢。

[编辑] 所以问题的一部分是我使用的是 Locale.getDefault(),所以很可能试图用葡萄牙语的 dateFormat 解析一个英文日期......使用正确的语言环境,我仍然得到 ParseException,但这次是偏移量 20 ,这意味着解析时区时出了点问题(在我的例子中是'BRT')......

【问题讨论】:

  • 您确定要解析的字符串中没有前导空格或其他字符。我使用与您相同的 DateFormat 编写了一个快速示例,并且没有问题
  • @Mena 我正在编辑问题,抱歉

标签: java date-format simpledateformat parseexception


【解决方案1】:

这可能是因为语言环境。

尝试改变

Locale.getDefault()

Locale.ENGLISH

喜欢这个

        String date_ = "Fri May 16 23:59:59 BRT 2014";
    DateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
    Calendar date = Calendar.getInstance(TimeZone.getTimeZone("America/Sao_Paulo"));
    dateFormat.setCalendar(date);
    try {
        date.setTime(dateFormat.parse(date_));
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

【讨论】:

  • 好的,当使用 Locale.ENGLISH 时,我得到了同样的异常,但这次是在偏移 20 处......所以我想我以错误的方式使用“z”模式,对此有任何提示?
【解决方案2】:

你确定吗? 代码在我的机器上运行良好

public static void main(String[] args) throws ParseException {
        String date = "Fri May 16 23:59:59 BRT 2014";
        String pattern = "EEE MMM dd HH:mm:ss z yyyy";
        DateFormat dateFormat = new SimpleDateFormat(pattern, Locale.getDefault());
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/Sao_Paulo"));
        cal.setTime(dateFormat.parse(date));


}

【讨论】:

    【解决方案3】:

    如果不看看他的网站,也许这种模式对你有用“EEE MMM d HH:mm:ss Z yyyy” http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

    例如:

    String pattern = "EEE MMM dd HH:mm:ss z yyyy";
            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, Locale.getDefault());
            Calendar d = Calendar.getInstance();
            try {
                d.setTime(dateFormat.parse(String.valueOf(d)));
            } catch (ParseException e1) {
                // TODO Auto-generated catch block
    
    
    e1.printStackTrace();
        }
    

    【讨论】:

    • 不起作用。在构建模式之前,我已经检查了该页面。还是谢谢
    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多