山口です。こんばんは。

Javaで、日付文字列をDateオブジェクトに変換する実装にハマって
います。

具体的には、
  Fri, 3 Jun 2005 23:59:59 +0000
のような形式、もっというと、fjの記事headerのDate部分をDate
オブジェクトにしたいのですが、うまくできません。

何か間違ったやり方をしているのでしょうか?

やり方は、SimpleDateFormatで
    "EEE, d MMM yyyy HH:mm:ss z"
をパターンとして指定して、parseしているだけです。が、どう
してもreturnがnullになってしまいます。

以下、実験しているプログラムと実行結果です。
-------------- ここからプログラム ----------------
import java.util.Date;
import java.util.GregorianCalendar;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParsePosition;

public class Test {
   /**
    * パターンはここで追加する
    */
   private static final String[] datePatternArray = {
    "EEE, d MMM yyyy HH:mm:ss z"};

  private static Date date = null;
  private static SimpleDateFormat sdf = (SimpleDateFormat)DateFormat.getDateInstance();

  public static void main(String[] arg) {
    if(arg.length != 1) { // 引数で
      System.exit(1);
    }

    String dateStr = arg[0];

    if(null != dateStr) {
      for(int i = 0; i < datePatternArray.length; i++) {
        sdf.applyPattern(datePatternArray[i]);
        date = sdf.parse(dateStr, new ParsePosition(0)); // どうしてもnullになってしまう...
        if(null != date) {
          break;
        }
      }
    }

    if(null != date) {
      System.out.println("Date.toString() = " + date.toString());
    } else {
      System.out.println("Invalid Date Text: " + arg[0]);
    }
  }
}
-------------- ここまでプログラム ----------------

-------------- ここから実験結果 ----------------
> uname -a
SunOS hoge 5.10 Generic i86pc i386 i86pc

> java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)

> java Test "Fri, 3 Jun 2005 14:47:13 +0000"
Invalid Date Text: Fri, 3 Jun 2005 14:47:13 +0000
-------------- ここまで実験結果 ----------------

{datePattern, 引数}を
 "d MMM yyyy HH:mm:ss", "3 Jun 2005 14:47:13"
 "d M yyyy HH:mm:ss", "3 Jun 2005 14:47:13"
にしてもnullでした。

何かしょーもない間違いのように思うのですが、さっぱり分からなく
なってしまいました。
-- 
 Tadasuke YAMAGUCHI @ Hyogo