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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/** * @project: WebProjectUtil * @class: NumberUtil * @describe: 此工具类用来处理数字方面的逻辑, * 如返回指定位数的随机数字、Double的加减乘除精确运算、指定位数数字用“0”补齐 * @autho: Administrator * @date: 2013-6-7 下午02:26:27 * @alter: Administrator * @alterDate: 2013-6-7 下午02:26:27 * @alterRemark: * @version V1.0 */ public class NumberUtil { private static final int DEF_DIV_SCALE = 2; /** * @return 返回12位随机数 */ public static String randomNumber() { } /** * @param parm * @return 返回指定位数随机数 */ public static String randomNumber(int parm) { } /** * * 两个Double数相加 * * @param v1 * @param v2 * @return Double */ public static Double add(Double v1, Double v2) { } /** * * 两个Double数相减 * * @param v1 * @param v2 * @return Double */ public static Double sub(Double v1, Double v2) { } /** * * 两个Double数相乘 * * @param v1 * @param v2 * @return Double */ public static Double mul(Double v1, Double v2) { } /** * * 两个Double数相除 * * @param v1 * @param v2 * @return Double */ public static Double div(Double v1, Double v2) { } /** * * 两个Double数相除,并保留scale位小数 * * @param v1 * @param v2 * @param scale * @return Double */ public static Double div(Double v1, Double v2, int scale) { } /** * 返回指定Double的负数 * @param v1 * @return */ public static Double neg(Double v1) { /** * @Title: toFixdLengthString * @Description: 将字符串用符号填充位数 * @param str 源字符串 * @param fixdlenth 位数 * @return String * @throws */ public static String toFixdLengthString(String str, int fixdlenth) { } /** * @Title: toFixdLengthString * @Description: 将数字用“0”填充位数 * @param num * @param fixdlenth * @return String * @throws */ public static String toFixdLengthString(int num, int fixdlenth) { } /** * @Title: generateSpaceString * @Description: 得到指定位数占位符 * @param length * @return String * @throws */ public static String generateSpaceString(int length) { } /** * @Title: generateZeroString * @Description: 得到指定位数的“0”的占位符 * @param length * @return String * @throws */ public static String generateZeroString(int length) { } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值