用正则表达式匹配,从1970-01-01开始往后2万天逐一测试日期有效性,包括闰年2月29日,都可以校验通过。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TempTest {
public static void main(String[] args) throws Exception {
Date date = new Date(0);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cale = Calendar.getInstance();
cale.setTime(date);
for (int i = 0; i < 20000; i++) {
if (!isValidDate(df.format(date))) {
System.out.println("校验失败:" + df.format(date));
}
cale.add(Calendar.DAY_OF_YEAR, 1);
}
System.out.println(df.format(cale.getTime()) + " End.");
}
/**
* 判断日期格式:yyyy-mm-dd
*
* @param sDate
* @return
*/
public static boolean isValidDate(String sDate) {
String datePattern1 = "\\d{4}-\\d{2}-\\d{2}";
String datePattern2 = "^((\\d{2}(([02468][048])|([13579][26]))"
+ "[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|"
+ "(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?"
+ "((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?("
+ "(((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?"
+ "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
if ((sDate != null)) {
Pattern pattern = Pattern.compile(datePattern1);
Matcher match = pattern.matcher(sDate);
if (match.matches()) {
pattern = Pattern.compile(datePattern2);
match = pattern.matcher(sDate);
return match.matches();
} else {
return false;
}
}
return false;
}
}
分享到:
相关推荐
"yyyyMM","yyyyMMdd",..."yyyy-MM","yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" "yyyy.MM","yyyy.MM.dd","yyyy.MM.dd HH:mm:ss" "yyyy/MM","yyyy/MM/dd","yyyy/MM/dd HH:mm:ss" "yyyy_MM","yyyy_MM_dd","yyyy_MM_dd HH:mm:ss
* "yyyy-MM","yyyy-MM-dd","yyyy-MM-dd HH:mm:ss" * "yyyy.MM","yyyy.MM.dd","yyyy.MM.dd HH:mm:ss" * "yyyy/MM","yyyy/MM/dd","yyyy/MM/dd HH:mm:ss" * "yyyy_MM","yyyy_MM_dd","yyyy_MM_dd HH:mm:ss" * @...
对于日期格式为`yyyy-MM-dd`或`yyyy-M-d`的情况,可以扩展为: - `^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|...
例如,在某些情况下,Excel中的日期格式可能是`yyyy-MM-dd`,但在读取时可能会被解析为`yy-MM-dd`形式,这会给后续的数据处理带来困扰。 #### 解决方案 针对上述问题,本文将介绍一种通过Java语言实现的解决方案,...
这些库提供了易于使用的API,可以帮助开发者创建具有日历视图的日期选择器,并能自动校验输入的日期格式是否符合"yyyy-MM-dd"的标准。 1. **JCalendar**: JCalendar是一个流行的Java日期选择器库,它包含一个日期...
而Apache POI是用于处理Microsoft Office格式文件的Java库,包括Excel。本项目结合了Spring Boot和POI,实现了Excel文件的导入与导出功能,这在数据管理、报表生成、数据分析等领域十分常见。 首先,我们要理解...
xml文件增加Base_Column_List,不用手写表字段名称可以自定义生成的model类中的属性类型,如数据库字段类型smallint生成model的字段类型为Integer...,统一异常处理参数校验错误前台传参智能映射java.util.Date类型...
在实际应用中,日期通常有特定的格式要求,比如“YYYY-MM-DD”、“YYYY/MM/DD”、“YYYY.MM/DD”等。在构建日期校验的正则表达式时,需要考虑这些分隔符。 知识点3:Java中的正则表达式类Pattern和Matcher Pattern...
例如,模式`"yyyy-MM-dd HH:mm:ss"`将生成形如"2022-03-25 15:30:45"的日期字符串。模式字符串中的每个字符都有特定的意义,如`y`代表年份,`M`代表月份,`d`代表日期,`H`代表24小时制的小时,`m`代表分钟,`s`代表...
书写Javascript函数对注册表单中的输入内容进行校验,校验规则如下: ... 手机号码不能为空,并且必须是有效的手机号码格式(13[58]*****... 出生日期不能为空,并且必须为有效的日期格式(YYYY-MM-DD),如1991-03-23
例如,你可以创建一个`SimpleDateFormat`对象,指定日期格式(如"yyyy-MM-dd"),然后将`Date`对象转换为字符串。 ```java Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-...
1. **日期时间格式化**:使用`DateTimeFormatter`创建自定义的日期时间格式,如"yyyy-MM-dd HH:mm:ss",方便将日期时间对象转换为字符串,或者反向解析字符串为日期时间对象。 2. **日期时间比较**:提供静态方法,...
此外,考虑到不同文化对日期格式的差异,日期框应具备适应不同地区日期格式的能力,如MM/DD/YYYY、DD/MM/YYYY或YYYY-MM-DD。 在前端开发中,CSS样式也是日历日期框不可或缺的一部分。开发者需要关注日期选择器的...
例如,我们可以使用ISO 8601标准("YYYY-MM-DD")或自定义格式("MM/DD/YYYY")来表示日期。 在编程语言中,如Java,我们可以使用`java.time`包中的类,如`LocalDate`来进行日期操作。而在Python中,我们可以利用`...
JDatePicker 继承自JComboBox的日期选择框,保证输入正确格式的日期(yyyy-MM-dd) 履历: 2004/03/26 根据网友caiyj的建议引入了recoon写的关于JDateDocument的校验方法 2004/04/02 根据网友caiyj提交的BUG,修正了...
7. 日期:日期格式可能有多种,如`yyyy-MM-dd`或`MM/dd/yyyy`。例如,使用`^\d{4}-[01]\d-[0-3]\d$`可以匹配形如`2022-03-01`的日期。 8. IP地址:IP地址由4个0-255的数字组成,之间用点分隔。可以使用`^((25[0-5]|...
"日期转换"可能意味着插件支持不同日期格式之间的转换,如从用户友好的MM/DD/YYYY格式转换为服务器所需的YYYY-MM-DD格式,或者处理各种国际化的日期格式。 在提供的文件列表中,"My97DatePicker"是一个经典的...
String firstDay = date.with(TemporalAdjusters.firstDayOfMonth()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // System.out.println("第一天为:"+firstDay); return firstDay; } /** * 获取...
具体而言,我们要确保输入的时间字符串符合“yyyy-mm-dd HH:MM:SS”的格式,并且还要考虑其中的日期是否合法(例如闰年二月29日的情况)。 #### 三、解析正则表达式 给出的正则表达式为: ```regex ^((((1[6-9]|[2...
7. **日期时间的格式化输出**:根据需求以特定格式输出日期和时间,如"yyyy-MM-dd HH:mm:ss"。 8. **日期时间的校验**:检查输入的日期时间是否有效,如闰年、月份天数等。 9. **时间间隔处理**:可能包含计算两个...