一つのアプローチは、そのフォームにあなたが期待しているフォームからあなたの文字列を変換するために、通常の文字列操作技術を使用することであれば、私も疑問に思います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ここで彼らはカスタム日付フォーマットを作成します –