2

我有以下字符串: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”)......

4

3 回答 3

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();
    }
于 2014-05-28T14:33:58.240 回答
0

如果不看看他的网站 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat,也许这种模式适合你“EEE MMM d HH:mm:ss Z yyyy”。 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();
    }
于 2014-05-28T14:28:11.040 回答
0

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

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


}
于 2014-05-28T14:28:15.560 回答