用java写一个id生成器,共16位,期格式如:SADD-20230526-0001。前四位工单标识,中间8位是年月日,后四位是当天的序列。
时间: 2023-12-31 18:03:28 浏览: 17
好的,以下是一个简单的Java程序,可用于生成类似于SADD-20230526-0001的ID:
```java
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class IdGenerator {
private static int counter = 0;
public static String generateId(String prefix) {
Calendar now = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
String date = dateFormat.format(now.getTime());
String id = String.format("%s-%s-%04d", prefix, date, getNextSequence());
return id;
}
private static synchronized int getNextSequence() {
if (counter >= 9999) {
counter = 1;
} else {
counter++;
}
return counter;
}
public static void main(String[] args) {
String id = IdGenerator.generateId("SADD");
System.out.println(id);
}
}
```
该程序定义了一个静态变量counter,用于计算每天生成的序列号。每次调用generateId方法时,程序会获取当前日期,并将其格式化为“yyyyMMdd”的形式。然后,程序会使用String.format方法将工单标识、日期和序列号组合起来,最终生成ID。getNextSequence方法用于获取下一个可用的序列号,如果已经超过9999,则将计数器重置为1。
在main方法中,程序调用了generateId方法,并将“SADD”作为工单标识传递给该方法。运行程序后,将会输出类似于“SADD-20230526-0001”的ID。