java开发利用日期+xxx生成形如20131210001的流水号下载

网上搜到的要么不太符合要求, 还有的居然还要收费. 很无语. 

这里整理了两种方法:

1. String.format  

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class SerialNumberGenerator {
    private static int counter = 1;

    public static String generateSerialNumber() {
        LocalDate currentDate = LocalDate.now();
        String dateString = currentDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
        String serialNumber = dateString + String.format("%03d", counter);
        counter++;
        return serialNumber;
    }

    public static void main(String[] args) {
        // 生成流水号
        String serialNumber = generateSerialNumber();
        System.out.println("Generated serial number: " + serialNumber);
    }
}

2. redis的increment

private String generateTaskCode() {
        String token = tryLock("lkd.task.code.", 1000 * 3);
        String taskCode = "";
        if (!StringUtils.isEmpty(token)) { // 抢到锁
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
            String date = dateFormat.format(new Date());
            String key = "lkd.task.code." + date;
            Object o = redisTemplate.opsForValue().get(key);
            if (null == o) { // 当天没有生成第一个的code
                String redisKey = key + String.format("%04d", 1);
                redisTemplate.opsForValue().set(redisKey, 1L, Duration.ofDays(1));
                return date + "0001";
            }
            taskCode = date + Strings.padStart(redisTemplate.opsForValue().increment(key, 1).toString(), 4, '0')
        }
        return taskCode;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值