java日期的格式校驗


 
第一種思路:
格式:

MM/dd/yyyy HH:mm:ss \d{1,2}/\d{1,2}/\d{4}(\s\d{1,2}:\d{1,2}:\d{1,2})? 2019/12/12 11:11:11 \d{4}/\d{1,2}/\d{1,2}(\s\d{1,2}:\d{1,2}:\d{1,2})? 2017-04-31 11:00:00 ^(\d{4})-([0-1]\d)-([0-3]\d)\s([0-5]\d):([0-5]\d):([0-5]\d)$ 實現: //校驗時間 2019/12/12 11:11:11 String serviceReg="\\d{4}/\\d{1,2}/\\d{1,2}(\\s\\d{1,2}:\\d{1,2}:\\d{1,2})?"; if(StringUtils.isNotBlank(serviceStartTime)){ boolean checkServiceStartTime = serviceStartTime.matches(serviceReg); if(!checkServiceStartTime){ archivesSaleInfoImport.setImportFailReason("包含不合法的服務期限"); failList.add(archivesSaleInfoImport); continue; } } if(StringUtils.isNotBlank(serviceEndTime)){ boolean checkServiceEndTime = serviceEndTime.matches(serviceReg); if(!checkServiceEndTime){ archivesSaleInfoImport.setImportFailReason("包含不合法的服務期限"); failList.add(archivesSaleInfoImport); continue; } } 另一種思路: public static boolean isValidDate(String str) { boolean convertSuccess=true;      // 指定日期格式為四位年/兩位月份/兩位日期,注意yyyy/MM/dd區分大小寫; SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm"); try {      // 設置lenient為false. 否則SimpleDateFormat會比較寬松地驗證日期,比如2007/02/29會被接受,並轉換成2007/03/01 format.setLenient(false); format.parse(str); } catch (ParseException e) { // e.printStackTrace(); // 如果throw java.text.ParseException或者NullPointerException,就說明格式不對 convertSuccess=false; } return convertSuccess; } 基於Jdk1.8線程安全的校驗: try { String date = "2021/11/30 11:11:59"; final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); LocalDateTime dateTime = LocalDateTime.parse(date, DATE_TIME_FORMATTER); // LOCAL_DATE_FORMAT.get().parse(date); System.out.println(dateTime.toString().replaceAll("T"," ")); } catch (DateTimeParseException e) { System.out.println(e); }
 
         
         
        

 

 


免責聲明!

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



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