SimpleDateFormat驗證時間格式是否正確


剛到公司實習的時候,公司讓在已有查詢條件的基礎上添加開始時間和結束時間的查詢條件。其中第一步要做的就是驗證時間格式是否正確及開始時間是否先於結束時間。所以這里把寫的驗證時間的代碼粘貼出來,方便自己以后使用。

一.判斷時間格式是否正確

實現功能:驗證時間格式是否為yyyy-MM-dd HH:mm:ss格式,其中,如果輸入的時間只有年月日,且為開始時間,則在開始時間后添加這天的開頭即00:00:00;如果是結束時間,則添加這天的末尾時間即23:59:59.

java代碼

 1 private static Logger logger = Logger.getLogger(TimeUtils.class);
 2 private static SimpleDateFormat format_ymd = new SimpleDateFormat("yyyy-MM-dd");// HH:mm:ss
 3 private static SimpleDateFormat format_ymdhms_nospace = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");// HH:mm:ss
 4 private static SimpleDateFormat format_ymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
 5 // 用於判斷時間參數的正誤
 6 public static String reDefineDate(String datestring, boolean isStart) {
 7     int strLen = datestring.length();
 8     Date date = null;
 9     try {
10         switch (strLen) {
11             case 10:
12             if (isStart) {
13                 date = format_ymdhms.parse(datestring + " 00:00:00");
14             } else {
15                 date = format_ymdhms.parse(datestring + " 23:59:59");
16         }break;
17             case 18:
18                 date = format_ymdhms_nospace.parse(datestring);
19                 break;
20            case 19:
21                 date = format_ymdhms.parse(datestring);
22                 break;
23            default:
24                 logger.info("未知時間轉換長度");
25                 break;
26            }
27         } catch (Exception e) {
28     logger.error("時間轉換出錯 " + e.getMessage() + " \n" + datestring, e);
29         }
30     if (date != null) {
31          return format_ymdhms.format(date);
32     } else {
33          return StringUtils.EMPTY;
34     }
35     }                                                            

二.判斷開始時間是否先於結束時間

在驗證了時間格式正確后,如果開始時間和結束時間都存在,還要判斷開始時間與結束時間的關系,只有開始時間先於結束時間,這倆個時間值才能被當做查詢條件,否則,應返回開始時間晚於結束時間的消息,並設置查詢失敗,原因為參數錯誤。

java代碼

 1 public static boolean isBefore(String time1, String time2) {
 2     try {
 3         Date date1 = format_ymdhms.parse(time1);
 4         Date date2 = format_ymdhms.parse(time2);
 5         return date1.before(date2);
 6         } catch (Exception e) {
 7                 e.printStackTrace();
 8     }
 9       return false;
10  }                

另外,如果只傳入開始時間或者結束時間,就不必比較時間的前后關系(只有一個時間,不存在比較關系),且這個時間也會作為參數傳給數據庫進行查詢。

結束語:

這個是剛進公司寫的程序,代碼不夠“優美”,是帶我的導師給我提出了很多意見,感謝他。同時也明白了自己編程的不足,希望能每天都進步,趕上他們。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM