チュートリアル
値が日付として妥当かどうかを確認するための方法について説明します。
日付として妥当であること(存在する日付であること)を確認する方法をご紹介します。
メソッド概要
引数で渡された値の属性チェック(日付の妥当性)を行う。
引数の文字列が日付として妥当性がある場合はtrue/左記以外はfalseを返却します。
※nullはfalseとして返却します。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package sample.code; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.ResolverStyle; public class DateCheker01 { /** * 日付チェック * @param str チェック対象の文字列(yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd) * @return true:日付、false:日付ではない */ public static boolean isDate(String str) { boolean ret = false; if (str != null) { try { String yyyMMdd = str.replace("-", "").replace("/", ""); DateTimeFormatter.ofPattern("uuuuMMdd").withResolverStyle(ResolverStyle.STRICT).parse(yyyMMdd, LocalDate::from); ret = true; } catch (Exception e) { } } return ret; } } |
テストコード(JUnit)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
package sample.test; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; import sample.code.DateCheker01; class StringCheckerTest06 { @Test void test01() { // null assertFalse(DateCheker01.isDate(null)); } @Test void test02() { // 空文字 assertFalse(DateCheker01.isDate("")); } @Test void test03() { // yyyy/MM/dd形式 assertTrue(DateCheker01.isDate("2021/01/26")); } @Test void test04() { // yyyy-MM-dd形式 assertTrue(DateCheker01.isDate("2021-01-26")); } @Test void test05() { // yyyyMMdd形式 assertTrue(DateCheker01.isDate("20210126")); } @Test void test06() { // 時刻あり assertFalse(DateCheker01.isDate("2021-01-26 16:00:00")); } @Test void test07() { // yyyy-M-d形式 assertFalse(DateCheker01.isDate("2021-2-1")); } @Test void test08() { // うるう年 assertTrue(DateCheker01.isDate("2020-02-29")); } @Test void test09() { // うるう年ではない assertFalse(DateCheker01.isDate("2021/02/29")); } @Test void test10() { // 無効な日付 assertFalse(DateCheker01.isDate("2020/11/41")); } @Test void test11() { // 文字列 assertFalse(DateCheker01.isDate("あいうえお")); } @Test void test12() { // 数値 assertFalse(DateCheker01.isDate("12345")); } } |