`
xieyan30
  • 浏览: 46930 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

自己想的一个java日期验证,不用正则

阅读更多

自己想的一个java日期验证,不用正则表达式
可以验证多种format格式的日期
这个在我博客里面的验证类中有。有需要的朋友可以去下载。
方法:

private static final String DATE_DEFAULT_FORMAT = "yyyyMMdd";

	/**
	 * string is date
	 * 
	 * @author xieyan 2012/10/22
	 * @param str checked string
	 * @param formatStr format
	 * @return true:is date | false:is not date
	 */
	public static boolean isDate(String str, String formatStr) {
		if (isNull(str))
			return false;
				
		if (isNullOrEmpty(formatStr))
			formatStr = DATE_DEFAULT_FORMAT;
		
		if (str.length() != formatStr.length())
			return false;
		
		SimpleDateFormat format = new SimpleDateFormat(formatStr);
		try {
			return str.equals(format.format(format.parse(str)));   // 这里用equals主要是为了防止像20121032这样数据会转为20121101
		} catch (ParseException e) {
			return false;
		}
	}

 junit方法

	/**
	 * test StringUtilities.isDate
	 */
	public void testIsDate() {
		// string is 20121022
		assertTrue(StringUtilities.isDate("20121022", ""));
		// string is 20121022
		assertTrue(StringUtilities.isDate("20121022", null));
		// string is 20121022, format is yyyyMMdd
		assertTrue(StringUtilities.isDate("20121022", "yyyyMMdd"));
		// string is 2012/10/22, format is yyyy/MM/dd
		assertTrue(StringUtilities.isDate("2012/10/22", "yyyy/MM/dd"));
		// string is 2012-10-22, format is yyyy-MM-dd
		assertTrue(StringUtilities.isDate("2012-10-22", "yyyy-MM-dd"));
		// string is 20121022 11:53:00.123, format is yyyyMMdd hh:mm:ss.SSS
		assertTrue(StringUtilities.isDate("20121022 11:53:00.123", "yyyyMMdd hh:mm:ss.SSS"));
		// string is 2012122, format is yyyyMdd
		assertFalse(StringUtilities.isDate("2012132", "yyyyMdd"));
		// string is 2012/10/22, format is yyyy/MM/dd
		assertFalse(StringUtilities.isDate("20121032", "yyyy-MM-dd"));
		// string is 2012/10/22, format is yyyy/MM/dd
		assertFalse(StringUtilities.isDate("20121032", "yyyyMMdd"));
		// string is 2012122, format is yyyyMMdd
		assertFalse(StringUtilities.isDate("2012132", "yyyyMMdd"));
		// string is ""
		assertFalse(StringUtilities.isDate("", "yyyyMMdd"));
		// string is "null"
		assertFalse(StringUtilities.isDate("null", "yyyyMMdd"));
		// string is null
		assertFalse(StringUtilities.isDate(null, "yyyyMMdd"));
	}
 

有异议的朋友可以短信我。

分享到:
评论
2 楼 xieyan30 2012-10-23  
谢谢,你说的正确
我修正了,非常感谢
1 楼 城堡里的卡夫卡 2012-10-23  
用 format.setLenient(false); 来代替 str.equals(format.format(format.parse(str)));

相关推荐

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

    * @param 日期验证,验证的格式有: * "yyyyMM","yyyyMMdd","yyyyMMdd 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...

    java正则验证

    java正则验证电话,手机,邮箱,日期,金额,很实用

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

    以上实现的是yyyy-MM-dd格式的日期验证,考虑到连字符的不同,以及月和日可能为M和d,即yyyy-M-d的格式,可以对以上正则进行扩展 ^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])([-/.]?)(?:0?[1-9]|1[0-9]|2[0-...

    Java正则表达式验证web端输入[身份证,邮箱,手机,中文字符]

    Java正则表达式验证web端输入[身份证,邮箱,手机,中文字符]

    验证手机号等正则表达式

    验证邮箱, 验证IP地址,验证网址Url,验证电话号码,验证输入邮政编号,验证输入身份证号,验证日期时间

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...

    java正则表达式验证工具类

    主要介绍了java正则表达式验证工具类,可以校验电话号码,身份证号码,日期格式,URL,email等等,需要的小伙伴参考下吧。

    正则表达式学习大全(有了这个,几乎不用看别的资料了,详情见资源描述)

    6、java正则表达式入门文档 7、Java正则表达式使用详解 8、常用正则表达式集锦 9、正则表达式高级学习技巧 10、正则表达式使用 11、正则表达式之道 12、正则表达式总结 13、30分钟入门教程 14、日期校验.doc

    正则表达式经典实例

     通过一个精练的教程理解正则表达式的基本原理和技巧;  在不同的编程语言和脚本语言中有效使用正则表达式;  学习如何对输入进行合法性检查和格式化;  处理单词、文本行、特殊字符和数值;  学习如何在...

    正则表达式

    如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" . 2.字符类 将单独的直接符放进中括号内就可以组合成字符类.一个字符类和它所包含的任何一个字符都匹配,所以正则表达式 / [abc] / 和字母 ...

    正则表达式经典实例.pdf

     通过一个精练的教程理解正则表达式的基本原理和技巧;  在不同的编程语言和脚本语言中有效使用正则表达式;  学习如何对输入进行合法性检查和格式化;  处理单词、文本行、特殊字符和数值;  学习如何在URL、...

    Java编程实践:10个实用例子助您提升技能正则表达式、文件操作、日期和时间处理、数据结构、集合类、接口和多态、递归、多线程编程

    1. 使用正则表达式验证邮箱格式:演示如何使用正则表达式验证邮箱地址的格式是否有效。 2. 读取和写入文本文件:展示了如何使用文件读取器和写入器来读取和写入文本文件的内容。 3. 使用日期和时间类:演示了Java 8...

    Java正则验证电话,手机,邮箱,日期,金额的方法示例

    主要介绍了Java正则验证电话,手机,邮箱,日期,金额的方法,结合具体实例形式分析了Java针对电话,手机,邮箱,日期,金额的正则判定操作技巧,需要的朋友可以参考下

    JAVA_API1.6文档(中文)

    javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代...

    如何用javascript正则表达式验证身份证号码是否合法

     很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息:  1、号码的结构  公民身份...

    Java 1.6 API 中文 New

    javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 ...

    java jdk实列宝典 光盘源代码

    日历:使用swing和awt实现一个图形化的日历可以查询星期、日期和年份信息(CalenderTrain.java);标准计算器(Callulator.java);更改组建外观,对日历设置几个显示外观(lookandfeel.java);自定义对话框Dialog...

    java api最新7.0

    javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代称为 ...

    JavaAPI1.6中文chm文档 part1

    javax.swing.plaf 提供一个接口和许多抽象类,Swing 用它们来提供自己的可插入外观功能。 javax.swing.plaf.basic 提供了根据基本外观构建的用户界面对象。 javax.swing.plaf.metal 提供根据 Java 外观(曾经代...

    java8日期工具类大全

    例如,可以实现方法来比较两个日期的大小,检查一个日期是否在另一个日期之前、之后或相等。这样,开发人员可以方便地进行日期的比较和判断,并根据需要执行相应的逻辑。 日期格式验证:日期工具类可以提供方法来...

Global site tag (gtag.js) - Google Analytics