java中实用校验日期和数字的工具类

校验字符串是否是合法日期格式

public static boolean isLegalDate(int length, String sDate, String format) {
        int legalLen = length;
        if ((sDate == null) || (sDate.length() != legalLen)) {
            return false;
        }
        DateFormat formatter = new SimpleDateFormat(format);
        try {
            Date date = formatter.parse(sDate);
            return sDate.equals(formatter.format(date));
        } catch (Exception e) {
            return false;
        }
    }

@Test
    public void testDateCheck() {
        String stringDate = "2023-10-32"; // 非法日期
        String format = "yyyy-MM-dd";

        boolean isLegalDate = isLegalDate(10, stringDate, format);
        System.out.println("日期" + stringDate + "是否是合法日期:" + isLegalDate);

        stringDate = "2024-08-08";
        isLegalDate = isLegalDate(10, stringDate, format);
        System.out.println("日期" + stringDate + "是否是合法日期:" + isLegalDate);
    }

运行结果如下:

日期2023-10-32是否是合法日期:false
日期2024-08-08是否是合法日期:true

校验字符串是否是合法数字

public static boolean isNumeric(String str) {
        try {
            new BigDecimal(str).toString();
        } catch (Exception e) {
            return false;
        }
        return true;
    }

@Test
    public void testIsNumeric() {
        String stringLegalNumeric = "20240808";
        boolean isLegalNumeric = isNumeric(stringLegalNumeric);
        System.out.println("字符串" + stringLegalNumeric + "是否是合法数字:" + isLegalNumeric);

        stringLegalNumeric = "20240808DATE";
        isLegalNumeric = isNumeric(stringLegalNumeric);
        System.out.println("字符串" + stringLegalNumeric + "是否是合法数字:" + isLegalNumeric);
    }

运行结果如下

字符串20240808是否是合法数字:true
字符串20240808DATE是否是合法数字:false

 校验数字精度是否符合要求

public static boolean checkPositivePrecision(BigDecimal num) {
        if (num == null) {
            return false;
        }
        if (Math.signum(num.doubleValue()) < 0) {
            return false;
        }
        if (num.scale() > 4 || num.precision() > 16 || (num.precision() - num.scale() > 12)) {
            return false;
        }
        return true;
    }

@Test
    public void testIsLegalNumeric() {
        BigDecimal num = new BigDecimal("1234.1234");
        boolean isNumeric = checkPositivePrecision(num);
        System.out.println("数字" + num + "是否符合16位整数4位小数要求:" + isNumeric);

        num = new BigDecimal("1234.12345");
        isNumeric = checkPositivePrecision(num);
        System.out.println("数字" + num + "是否符合16位整数4位小数要求:" + isNumeric);
    }

运行结果如下

数字1234.1234是否符合16位整数4位小数要求:true
数字1234.12345是否符合16位整数4位小数要求:false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chen2017sheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值