Loading...

          java .net

          用DateFormat的parse方法驗證字符串是否是日期的問題

          因為最近比較閑 有點不思進取 也沒什么問題要寫了
          今天不錯,發現一個,恩,感覺不錯
          做了一個上傳Excel并解析數據然后入庫的功能,里面涉及到是否是日期格式的判斷
          之前是這么寫的(深諳這么寫是不好的,但以為它是可靠的)

          private boolean checkDate(String content) {
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                  try {
                      sdf.parse(content);
                      return true;
                  } catch (Exception e){
                      return false;
                  }
              }

          現在發現問題了,對于“2008-06-23asdf”這種情況是返回true的,哈哈,看來是孤陋寡聞了,基礎不扎實了,看API上這樣講:

          在默認情況下,進行的分析是不嚴格的:如果輸入的形式不是此對象的格式化方法使用的形式,但仍可作為日期進行分析,則分析將獲得成功。客戶機可能通過調用 setLenient(false) 來強調嚴格遵守該格式。


          按照API說法,將代碼改成
          private boolean checkDate(String content) {
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                  try {
                      sdf. setLenient(false);
                      sdf.parse(content);
                      return true;
                  } catch (Exception e){
                      return false;
                  }
              }

          運行結果“2008-06-23asdf”這種情況還是返回true的,但“2008-13-23”這種情況是返回false的
          最后改進程這種寫法,可以適應"yyyy-MM-dd""yyyy-M-d""yyyy-MM-d""yyyy-M-dd"

          private boolean checkDate(String content) {
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
                  try {
                      sdf.setLenient(false);
                      content = content.replaceAll("-0", "-");
                      Date d = sdf.parse(content);
                      String s = sdf.format(d);
                      return content.equals(s);
                  } catch (Exception e){
                      return false;
                  }
              }

          參考資料http://www.99inf.net/SoftwareDev/Java/52734.htm
                        http://blog.163.com/everlee@126/blog/static/263574220089822631229/

          當然也可以用正則表達式做到。

          posted on 2009-07-13 17:11 閱讀(2179) 評論(1)  編輯  收藏 所屬分類: 學習java

          評論

          # re: 用DateFormat的parse方法驗證字符串是否是日期的問題 2009-07-14 14:46 凡客誠品

          頂一下!!  回復  更多評論   

          公告

          希望有一天

          我能用鼠標雙擊我的錢包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導航

          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(102)

          隨筆檔案(398)

          文章分類

          文章檔案(10)

          有趣網絡

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 仁布县| 长宁区| 武胜县| 嘉峪关市| 锡林浩特市| 城步| 金塔县| 叙永县| 长泰县| 平塘县| 土默特左旗| 沧州市| 阿城市| 亳州市| 宁武县| 高平市| 明水县| 孟津县| 陵水| 梅河口市| 公主岭市| 宁夏| 伊宁县| 蒲江县| 衡东县| 富锦市| 噶尔县| 武宁县| 芷江| 无为县| 阿克苏市| 罗源县| 汉中市| 祁门县| 简阳市| 夹江县| 呼图壁县| 沁源县| 衡水市| 巴彦淖尔市| 缙云县|