<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    在JAVA中如何檢查字符串日期的合法性

    文/陳剛 from www.chengang.com.cn 2005-11-04 


      在SWT中還沒有日期控件,所以我的日期是用文本框手工輸入的,這時就需要驗證輸入的日期是否合法。在之前我是復制很久以前寫的一段代碼,它的解決方法是分解日期字串,然后檢查,這很笨且不嚴格。正確的方案應該是利用DateFormat類來檢查,如下所示:
     
    public final class StringUtil {
        private static Calendar calendar = Calendar.getInstance();
        private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        private static DateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        static {
            dateFormat.setLenient(false);//這個的功能是不把1996-13-3 轉換為1997-1-3
            dateTimeFormat.setLenient(false);
        }
     
        public static Date parseStringToDate(String dateStr) {
            if (dateStr == null || dateStr.trim().equals(""))
                return null;
            dateStr = dateStr.trim();
            Date date = null;
            try {
                if (dateStr.length() <= 10) {
                    date = dateFormat.parse(dateStr);
                } else {
                    date = dateTimeFormat.parse(dateStr);
                }
            } catch (Exception e) {
                throw new IllegalArgumentException("你輸入的日期不合法,請重新輸入");
            }
            return date;
        }
    }

     
    這個方法的Test Case也一并給出如下:
     
    public class TestStringUtil extends TestCase {
        public void testParseStringToDate() {
            {
                Calendar c = Calendar.getInstance();
                c.clear();
                c.set(2000, 1, 3, 0, 0, 0);
                Date d = StringUtil.parseStringToDate("2000-02-03");
                assertEquals(c.getTime().getTime(), d.getTime());
            }
            {
                Calendar c = Calendar.getInstance();
                c.clear();
                c.set(2000, 1, 3, 11, 22, 33);
                Date d = StringUtil.parseStringToDate("2000-02-03 11:22:33");
                assertEquals(c.getTime().getTime(), d.getTime());
            }
            {
                Calendar c = Calendar.getInstance();
                c.clear();
                c.set(2000, 1, 3, 0, 0, 0);
                Date d = StringUtil.parseStringToDate("2000-02-3");
                assertEquals(c.getTime().getTime(), d.getTime());
            }
            {
                Calendar c = Calendar.getInstance();
                c.clear();
                c.set(2000, 1, 3, 1, 2, 3);
                Date d = StringUtil.parseStringToDate("2000-02-03 1:02:03");
                assertEquals(c.getTime().getTime(), d.getTime());
            }
            {
                assertNull(StringUtil.parseStringToDate(""));
                assertNull(StringUtil.parseStringToDate("  "));
                assertNull(StringUtil.parseStringToDate(null));
            }
        }
        public void testParseStringToDateException() {
            testParseStringToDateException("2000");
            testParseStringToDateException("2000-13-03");
            testParseStringToDateException("2000-02-03 51:02:03");
            testParseStringToDateException("2000-02-03 01:f2:03");
            testParseStringToDateException("2000-02-03 01:02");
            testParseStringToDateException("2000-02-03 01:02:222");
        }
        private void testParseStringToDateException(String dateStr) {
            try {
                StringUtil.parseStringToDate(dateStr);
                fail("末拋出異常");
            } catch (Exception e) {
                assertTrue(true);
            }
        }
    }

    posted on 2006-03-07 14:39 陳剛 閱讀(3527) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲中文字幕无码中文字在线 | 久久亚洲国产精品一区二区| 亚洲av无码有乱码在线观看| 国产精品1024永久免费视频| 亚洲成在人线中文字幕| 51精品视频免费国产专区| 亚洲系列中文字幕| 999久久久免费精品国产| 久久久久亚洲精品日久生情 | 亚洲视频在线观看地址| 久久大香伊焦在人线免费| 亚洲AV无码专区亚洲AV伊甸园 | 永久免费无码日韩视频| 中文字幕专区在线亚洲| 水蜜桃视频在线观看免费播放高清 | 亚洲天堂在线视频| 成在线人视频免费视频 | 又色又污又黄无遮挡的免费视| 亚洲日韩精品国产3区| 国产成人免费手机在线观看视频| 久久精品国产亚洲av天美18| 亚洲?V乱码久久精品蜜桃 | 日本免费网站在线观看| 日韩在线视精品在亚洲| 亚洲日韩小电影在线观看| 久久精品一区二区免费看| 亚洲AV无码乱码在线观看代蜜桃| 成人免费视频一区二区三区| 粉色视频成年免费人15次| 亚洲精品美女久久777777| 日韩免费一区二区三区在线| 亚洲暴爽av人人爽日日碰| 久久亚洲中文字幕精品一区| 18禁止看的免费污网站| 另类小说亚洲色图| 亚洲AV日韩AV永久无码下载| 日韩吃奶摸下AA片免费观看| 成人特级毛片69免费观看| 亚洲视频一区网站| 国产一级高清视频免费看| 日韩插啊免费视频在线观看|