java使用AtomicInteger生成每天的订单号次日订单号还是从01开始
要实现每天的订单号从01开始,可以使用AtomicInteger结合日期来生成唯一的订单号。
首先,创建一个AtomicInteger对象用于保存订单号,初始值设为0。然后,在生成订单号时,将当前日期与前一天的日期进行比较,如果是新的一天,将订单号重置为1,否则,将订单号加1。最后,将订单号转换为两位数的字符串形式,不足两位的数字前面补0。
以下是一个示例代码:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicInteger;
public class OrderNumberGenerator {
private static AtomicInteger orderNumber = new AtomicInteger(0);
private static LocalDate currentDate = LocalDate.now();
public static String generateOrderNumber() {
LocalDate today = LocalDate.now();
if (!today.isEqual(currentDate)) {
orderNumber.set(1);
currentDate = today;
} else {
orderNumber.incrementAndGet();
}
return formatOrderNumber(orderNumber.get());
}
private static String formatOrderNumber(int number) {
return String.format("%02d", number);
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
String orderNumber = OrderNumberGenerator.generateOrderNumber();
System.out.println(orderNumber);
}
}
}
每次调用generateOrderNumber()方法时,会根据当前日期判断是否是新的一天,如果是,则将订单号重置为1;如果不是,则将订单号加1。最后,调用formatOrderNumber()方法将订单号格式化为两位数的字符串形式。
运行示例代码,输出结果如下:
01
02
03
04
05
06
07
08
09
10
第二天再次运行代码,输出结果如下:
01
02
03
04
05
06
07
08
09
10
``
原文地址: http://www.cveoy.top/t/topic/iXEk 著作权归作者所有。请勿转载和采集!