我正在尝试将String转换为Date,但还没有得到。

我的字符串格式为:

"Fri Jun 13 10:24:01 BRT 2014"


我已经用Google搜索并找到了此解决方案,但仍然继续捕获异常。

这是我的代码:

java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("EEE MMM dd HH:mm:ss 'BRT' yyyy", Locale.getDefault());
df.setTimeZone(TimeZone.getTimeZone("BRT"));
try {
    return df.parse(dateString);
} catch (Exception e) {
    return null;
}

最佳答案

你需要:

SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone("BRT"));
DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date d = df.parse("Fri Jun 13 10:24:01 BRT 2014");
System.out.println(utcFormat.format(d)); // output: 2014-06-13T12:24:01+0200


考虑以下更正:


Locale.ENGLISH代替Locale.getDefault()启用可靠的英语名称解析,例如“ Jun”或“ Fri”
使用模式符号z而不是文字“ BRT”,因为解析器无法将字符串“ BRT”解释为解释为“巴西标准时间”的时区名称的缩写(在您的情况下,只是解析为文字,因此不考虑时区) UTC-03:00的偏移量)。

10-07 15:50