想上网搜一下直接用,发现这种垃圾代码竟然有人还收费,干脆自己写一下供大家使用
/**
* 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
}
}