0002/11/30の謎
2009/10/21
java
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));
}
}
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でグーグルさんに尋ねるといくつかヒットしますね。
: