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
java时间日期格式转换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();
// 如果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_().parse(date);
System.out.String().replaceAll("T"," "));
} catch (DateTimeParseException e) {
System.out.println(e);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论