0002/11/30の謎 2009/10/21

Javaです。

下記のようなコードに出会いました。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDate {

public static void main(String[] args) throws ParseException {
a("20091022");
a("00000000");
}

static void a(String s) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date date = format.parse(s);
System.out.printf("in:[%s] out:[%s]%n", s, new SimpleDateFormat(
"yyyy/MM/dd").format(date));
}
}


動かしたらこんな結果になりました。
in:[20091022] out:[2009/10/22]
in:[00000000] out:[0002/11/30]


気分としては、00000000を渡したら、0000/00/00になって欲しかったのですが、
Dateを使う実装だったので、0002/11/30という値になったわけです。

どうして0002/11/30になるんですかね?

0002/11/30でグーグルさんに尋ねるといくつかヒットしますね。

:

GapTail
このコメントは投稿者によって削除されました。