日付文字列をDateオブジェクトに変換するには
山口です。こんばんは。
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
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735