`
samjavaeye
  • 浏览: 194487 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

yyyy-MM-dd格式的Java日期校验代码

    博客分类:
  • Java
 
阅读更多

用正则表达式匹配,从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;
	}

}

 

 

 

分享到:
评论
1 楼 Ma__sm 2012-06-01  
感谢

相关推荐

    Java正则校验日期格式包括所有

    "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

    java代码验证日期格式正则表达式(包含闰年验证)带注释

    * "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" * @...

    C# 最全的日期正则表达式,没有之一

    对于日期格式为`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))|...

    Java读取Excel表格中的日期

    例如,在某些情况下,Excel中的日期格式可能是`yyyy-MM-dd`,但在读取时可能会被解析为`yy-MM-dd`形式,这会给后续的数据处理带来困扰。 #### 解决方案 针对上述问题,本文将介绍一种通过Java语言实现的解决方案,...

    java时间控件

    这些库提供了易于使用的API,可以帮助开发者创建具有日历视图的日期选择器,并能自动校验输入的日期格式是否符合"yyyy-MM-dd"的标准。 1. **JCalendar**: JCalendar是一个流行的Java日期选择器库,它包含一个日期...

    Springboot+Poi实现Excel的导入导出

    而Apache POI是用于处理Microsoft Office格式文件的Java库,包括Excel。本项目结合了Spring Boot和POI,实现了Excel文件的导入与导出功能,这在数据管理、报表生成、数据分析等领域十分常见。 首先,我们要理解...

    springboot-api

    xml文件增加Base_Column_List,不用手写表字段名称可以自定义生成的model类中的属性类型,如数据库字段类型smallint生成model的字段类型为Integer...,统一异常处理参数校验错误前台传参智能映射java.util.Date类型...

    Java基于正则实现的日期校验功能示例

    在实际应用中,日期通常有特定的格式要求,比如“YYYY-MM-DD”、“YYYY/MM/DD”、“YYYY.MM/DD”等。在构建日期校验的正则表达式时,需要考虑这些分隔符。 知识点3:Java中的正则表达式类Pattern和Matcher Pattern...

    详解Java中格式化日期的DateFormat与SimpleDateFormat类

    例如,模式`"yyyy-MM-dd HH:mm:ss"`将生成形如"2022-03-25 15:30:45"的日期字符串。模式字符串中的每个字符都有特定的意义,如`y`代表年份,`M`代表月份,`d`代表日期,`H`代表24小时制的小时,`m`代表分钟,`s`代表...

    java web注册验证

    书写Javascript函数对注册表单中的输入内容进行校验,校验规则如下: ... 手机号码不能为空,并且必须是有效的手机号码格式(13[58]*****... 出生日期不能为空,并且必须为有效的日期格式(YYYY-MM-DD),如1991-03-23

    struts日期的处理

    例如,你可以创建一个`SimpleDateFormat`对象,指定日期格式(如"yyyy-MM-dd"),然后将`Date`对象转换为字符串。 ```java Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-...

    时间日期工具类(包含java8新特性).zip

    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中,我们可以利用`...

    OpenSwing---Java 常用控件集合

    JDatePicker 继承自JComboBox的日期选择框,保证输入正确格式的日期(yyyy-MM-dd) 履历: 2004/03/26 根据网友caiyj的建议引入了recoon写的关于JDateDocument的校验方法 2004/04/02 根据网友caiyj提交的BUG,修正了...

    Java常用的一些正则表达式

    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"是一个经典的...

    LocalDateTimeUtil.java

    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...

    java utils 工具类

    7. **日期时间的格式化输出**:根据需求以特定格式输出日期和时间,如"yyyy-MM-dd HH:mm:ss"。 8. **日期时间的校验**:检查输入的日期时间是否有效,如闰年、月份天数等。 9. **时间间隔处理**:可能包含计算两个...

Global site tag (gtag.js) - Google Analytics