一種方法是使用普通字符串處理技術,將您的字符串從你期望的形式的形式把所SimpleDateFormat
會明白。您還沒有確切的說什麼範圍的時區格式是可以接受的,但一種可能是這樣的:
private static Date parse(String dateString) throws ParseException
{
final SimpleDateFormat dateFormat =
new SimpleDateFormat("E, dd MMM yyyy kk:mm:ss Z");
dateString = dateString.replaceAll("(GMT[+-])(\\d)$", "$1\\0$2");
dateString = dateString.replaceAll("(GMT[+-]\\d\\d)$", "$1:00");
return dateFormat.parse(dateString);
}
,將支持GMT加或減一或二位數字的小時偏移,此外還支持SimpleDateFormat
已支持的任何內容,例如EST
或GMT+1030
。
或者,如果你知道它永遠是GMT,那麼你可以設置格式化的時區,而忽略了時區的字符串:
private static Date parse(String dateString) throws ParseException
{
final SimpleDateFormat dateFormat =
new SimpleDateFormat("E, dd MMM yyyy kk:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormat.parse(dateString);
}
您也可以分割區別。我注意到您的字符串中的時區格式與TimeZone.getTimeZone()
預期的相符。那是故意的嗎?如果是這樣,你可以抓住該時區格式出的字符串,它傳遞給dateFormat.setTimeZone
事前,然後實際的解析過程中忽略它:
private static Date parse(final String dateString) throws ParseException
{
final SimpleDateFormat dateFormat =
new SimpleDateFormat("E, dd MMM yyyy kk:mm:ss");
if(dateString.indexOf("GMT") > 0)
dateFormat.setTimeZone
(
TimeZone.getTimeZone
(dateString.substring(dateString.indexOf("GMT")))
);
return dateFormat.parse(dateString);
}
http://home.tiscali.nl/bmc88/java/ sbook/035.html這裏他們創建一個自定義的日期格式 – 2011-12-04 19:24:12