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
原文地址: https://www.cveoy.top/t/topic/qDDW 著作权归作者所有。请勿转载和采集!