java - ParseException - 无法找出正确的模式

标签 java date-format simpledateformat parseexception

我有以下字符串: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 解析英语日期......使用正确的 Locale,我仍然得到 ParseException,但这次在偏移量 20 ,这意味着解析时区时出现问题(在我的例子中是“BRT”)...

最佳答案

这可能是因为语言环境。

尝试改变

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();
    }

关于java - ParseException - 无法找出正确的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23914287/

相关文章:

java - 升级没有 .proto 的 protobuf jar 的命名空间

sql-server-2005 - 如何更改 SQL Server 中的语言和日期格式?

java - 使用 Date 获取昨天的日期

java - 简单日期格式

java - 将字符串数组添加到日历数组中

java - 将 For 循环更改为递归方法

java - Size 在 ArrayList 中具有私有(private)访问权限

java - Apache Beam - BigQueryIO 读取投影

jsp - 使用 JSTL/fmt 在 EL 中格式化 GregorianCalendar

php - DATE_FORMAT() 在 PHP 中不显示任何内容