`
xieyan30
  • 浏览: 49143 次
  • 性别: 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编程语言中,正则表达式被广泛应用于数据验证、文本提取和字符串操作。以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,...

    Java 日期时间与正则表达式.pdf

    1. **Java日期API** - `LocalDate`:这个类用于表示没有时间信息的日期,如2023年1月1日。你可以通过`LocalDate.now()`获取当前日期,或者使用`LocalDate.of(year, month, day)`创建指定日期,例如`LocalDate.of...

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

    在Java编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,广泛应用于数据验证、文本搜索和替换等场景。对于Web开发来说,输入验证是必不可少的一环,以确保用户提交的数据符合预期的格式。本教程...

    常用java正则表达式

    例如,`(\w+)\s+(\w+)\s+(\d+),\s+(\d+)`用于匹配类似`June 26, 1951`这样的日期格式,其中`\w+`匹配单词字符,`\s+`匹配一个或多个空白字符。 #### 三、Jakarta-ORO API使用示例 在Java中使用正则表达式,通常会...

    Java常用的一些正则表达式

    Java正则表达式是编程语言Java中用于处理字符串的强大工具,它允许我们通过模式匹配来验证、提取或替换文本。在Java中,正则表达式是通过`java.util.regex`包中的类和接口实现的,如`Pattern`、`Matcher`和`...

    java正则表达式实例(邮箱,车牌,密码,url,IP,身份证,车牌等等)

    日期验证(年月日) ```regex (\d{4})?((0?[1-9])|10|11|12)((0?[1-9])|[1-2][0-9]|3[0-1]) ``` - **解析**:该正则表达式用于验证日期格式是否正确。 - `(\d{4})?` 表示年份部分,可选。 - `((0?[1-9])|10|11|12...

    java_zhengze.rar_正则表达式_正则表达式 java

    本资料"java_zhengze.rar"提供了对Java正则表达式的详细讲解,包括基本概念、元字符、预定义字符类以及各种匹配操作,对于Java开发者来说是一份非常实用的学习资源。 首先,我们来了解一下正则表达式的基石——元...

    java正则验证

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

    Java JDK正则表达

    - 此示例中,我们使用了一个较为简单的正则表达式来匹配日期。该表达式`(\d{4})[-/.](\d{2})[-/.](\d{2})`用于匹配标准的日期格式,包括年、月、日,并且允许使用破折号、斜杠或点作为分隔符。 - 使用`Matcher`对象...

    Java及python正则表达式详解

    ### Java及Python正则表达式详解 #### 一、正则表达式简介 正则表达式是一种用于描述字符串模式的强大工具。它可以帮助我们快速高效地完成字符串搜索、替换等操作。正则表达式由一系列字符和特殊符号组成,用于...

    java正则表达式验证函数

    总的来说,Java的正则表达式验证函数是一个强大的工具,能够帮助开发人员确保输入的数据符合预期的格式,从而提高程序的健壮性和用户体验。通过封装成静态方法,可以方便地在多个地方复用,降低了代码的复杂性。在...

    java正则表达式详解

    例如,如果想要匹配一个以`t`开头,以`n`结尾的三个字母组成的单词,可以使用正则表达式`t.n`。这将匹配如`tan`、`ten`、`tin`等单词,同时也会匹配`tn`以及包含特殊字符的组合,如`t#n`、`tpn`等。 **示例**: - ...

    java基于正则表达式实现时间日期的常用判断操作实例

    除了基本的日期格式验证外,Java正则表达式还可以用来判断时间格式(例如HH:mm:ss),或者综合日期时间格式(YYYY-MM-DD HH:mm:ss)。根据不同需求,正则表达式将相应地进行调整。 以上就是本文关于Java中基于正则...

    java 中常用的一些正则表达式

    ### Java中常用的正则表达式知识点详解 #### 一、中国电话号码验证 **应用场景:** 在进行用户信息录入或验证时,确保电话号码格式正确是常见需求之一。中国的电话号码通常包含区号(可选)及电话号码主体部分。 ...

    Java正则表达式使用

    Java中的正则表达式是处理和匹配文本模式的强大工具,尤其在进行数据验证、文本查找替换等场景下非常实用。正则表达式是由特定字符组成的字符串,定义了一种模式,用于在文本中寻找符合该模式的子串。 1. **基础...

    Java正则表达式详细讲解

    下面是一些Java正则表达式的实例,包括邮箱验证、URL验证等。 ```java String emailRegex = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"; String urlRegex = "^https?://([a-zA-Z0-9\\-\\.]+)\\.(com|org|net|...

    比较全面的正则表单验证

    在"表单验证"这个压缩包文件中,可能包含了各种常用的正则表达式示例和代码片段,对于开发者来说,这是一份很好的参考资料,可以帮助他们快速实现表单验证功能,提高开发效率。通过学习和理解这些示例,开发者可以更...

    正则表达式数字验证

    #### 一、Java中的数字验证正则表达式 在Java中,可以通过`java.util.regex`包提供的工具来进行正则表达式的匹配操作。下面是一个示例方法,用于判断一个字符串是否只包含数字: ```java public boolean isNumber...

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

    虽然C#提供了强大的日期处理库,例如`DateTime`和`Calendar`类,但在某些特定场景下,如需要对输入的文本进行日期格式的验证时,正则表达式则显得尤为重要。 #### 2. 日期的规则 ##### 2.1 日期的有效范围 - **...

Global site tag (gtag.js) - Google Analytics