生成以日期开头,加4位数字,每次加1的工具类.如:202308150001,第二日再从0开始计算

想上网搜一下直接用,发现这种垃圾代码竟然有人还收费,干脆自己写一下供大家使用

/**
 * lhp
 * 2023/8/15
 * 生成以日期开头,加4位数字,每次加1的工具类.如:201712140001,第二日再从0开始计算
 */
public class NumberGenerator {
    private static final DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    private static Date lastDate = null;
    private static int counter = 0;

    //加锁
    public static synchronized String generateNumber() {
        Date currentDate = new Date();
        if (lastDate == null || !isSameDay(currentDate, lastDate)) {
            lastDate = currentDate;
            counter = 0;
        }
        String datePrefix = dateFormat.format(currentDate);
        String numberSuffix = String.format("%04d", counter++);
        return datePrefix + numberSuffix;
    }

    private static boolean isSameDay(Date date1, Date date2) {
        DateFormat dayFormat = new SimpleDateFormat("yyyyMMdd");
        return dayFormat.format(date1).equals(dayFormat.format(date2));
    }
}

使用

public class Main {
    public static void main(String[] args) {
        // 示例使用
        String number1 = NumberGenerator.generateNumber();
        String number2 = NumberGenerator.generateNumber();
        String number3 = NumberGenerator.generateNumber();

        System.out.println(number1);  // 输出: 202308150000
        System.out.println(number2);  // 输出: 202308150001
        System.out.println(number3);  // 输出: 202308150002
        
        // 模拟日期变化
        String number4 = NumberGenerator.generateNumber();
        System.out.println(number4);  // 输出: 202308160000
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值