当前位置:   article > 正文

java 判断日期合法_在JAVA中如何检查字符串日期的合法性

日期合法性检验注解java

在SWT中还没有日期控件,所以我的日期是用文本框手工输入的,这时就需要验证输入的日期是否合法。在之前我是复制很久以前写的一段代码,它的解决方法是分解日期字串,然后检查,这很笨且不严格。正确的方案应该是利用DateFormat类来检查,如下所示:

public final class StringUtil {

private static Calendar calendar = Calendar.getInstance();

private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

private static DateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

static {

dateFormat.setLenient(false);//这个的功能是不把1996-13-3 转换为1997-1-3

dateTimeFormat.setLenient(false);

}

public static Date parseStringToDate(String dateStr) {

if (dateStr == null || dateStr.trim().equals(""))

return null;

dateStr = dateStr.trim();

Date date = null;

try {

if (dateStr.length() <= 10) {

date = dateFormat.parse(dateStr);

} else {

date = dateTimeFormat.parse(dateStr);

}

} catch (Exception e) {

throw new IllegalArgumentException("你输入的日期不合法,请重新输入");

}

return date;

}

}

这个方法的Test Case也一并给出如下:

public class TestStringUtil extends TestCase {

public void testParseStringToDate() {

{

Calendar c = Calendar.getInstance();

c.clear();

c.set(2000, 1, 3, 0, 0, 0);

Date d = StringUtil.parseStringToDate("2000-02-03");

assertEquals(c.getTime().getTime(), d.getTime());

}

{

Calendar c = Calendar.getInstance();

c.clear();

c.set(2000, 1, 3, 11, 22, 33);

Date d = StringUtil.parseStringToDate("2000-02-03 11:22:33");

assertEquals(c.getTime().getTime(), d.getTime());

}

{

Calendar c = Calendar.getInstance();

c.clear();

c.set(2000, 1, 3, 0, 0, 0);

Date d = StringUtil.parseStringToDate("2000-02-3");

assertEquals(c.getTime().getTime(), d.getTime());

}

{

Calendar c = Calendar.getInstance();

c.clear();

c.set(2000, 1, 3, 1, 2, 3);

Date d = StringUtil.parseStringToDate("2000-02-03 1:02:03");

assertEquals(c.getTime().getTime(), d.getTime());

}

{

assertNull(StringUtil.parseStringToDate(""));

assertNull(StringUtil.parseStringToDate("  "));

assertNull(StringUtil.parseStringToDate(null));

}

}

public void testParseStringToDateException() {

testParseStringToDateException("2000");

testParseStringToDateException("2000-13-03");

testParseStringToDateException("2000-02-03 51:02:03");

testParseStringToDateException("2000-02-03 01:f2:03");

testParseStringToDateException("2000-02-03 01:02");

testParseStringToDateException("2000-02-03 01:02:222");

}

private void testParseStringToDateException(String dateStr) {

try {

StringUtil.parseStringToDate(dateStr);

fail("末抛出异常");

} catch (Exception e) {

assertTrue(true);

}

}

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/52167
推荐阅读
相关标签
  

闽ICP备14008679号