SimpleDateFormatを使って、日付フォーマット - 再び
2014/02/16
java
日付処理
javaです。日付フォーマットです。
何度も似たようなものではまってる自分がいるので、メモ
- プログラマメモ2: [java] SimpleDateFormatを使って、日付フォーマット。
- プログラマメモ2: [java] 文字列からjava.util.Dateに変換します。そのときに大目にみません。
使うフォーマットは、yyyyMMdd
lenientは設定しない(デフォルト)
設定する(true)ですと、今回試した値は全て例外となります。
00000000 00021130
99999999 100070607
19990000 19981130
00009900 00080229
00000099 00010308
19990099 19990309
20130230 20130302
20140231 20140303
Unparseable date: "2013"
Unparseable date: "201401"
2014020 20140131
使ったコードは、
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimplaDateFormat {
public static void main(String[] args) throws ParseException {
a();
}
static void a() throws ParseException {
// 文字列から日付の生成
{ // どういう値になるかチェック
test("00000000");
test("99999999");
test("19990000");//
test("00009900");
test("00000099");
test("19990099");
}
{ // 存在しない日付
test("20130230");
test("20140231");
}
{ // 桁が足りない
testNoThrowE("2013");// 4桁(月日なし)
testNoThrowE("201401");// 6桁(日なし)
testNoThrowE("2014020"); // 7桁
}
}
static void testNoThrowE(String s) {
try {
test(s);
} catch (ParseException e) {
System.out.println(e.getMessage());
}
}
static void test(String s) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = dateFormat.parse(s);
System.out.printf("%s\t%s\n", s, dateFormat.format(date));
}
}
: