自己想的一个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"));
	}
 

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

猜你喜欢

转载自xieyan30.iteye.com/blog/1703597
今日推荐