java 按格式XC+YY+000000001,生成递增 按年重置
时间: 2023-09-30 11:10:03 浏览: 47
以下是一个Java程序,实现了按照格式XC YY 000000001生成递增编号,并按照年份进行重置。
```java
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class IncrementalNumberGenerator {
private static final String FORMAT = "XC YY %09d";
private static final int RESET_YEAR = LocalDate.now().getYear();
private static int currentYear = RESET_YEAR;
private static int currentNumber = 0;
public static String generate() {
LocalDate now = LocalDate.now();
if (now.getYear() != currentYear) {
currentYear = now.getYear();
currentNumber = 0;
}
currentNumber++;
return String.format(FORMAT, currentNumber);
}
public static void main(String[] args) {
System.out.println(generate()); // XC YY 000000001
System.out.println(generate()); // XC YY 000000002
System.out.println(generate()); // XC YY 000000003
LocalDate nextYear = LocalDate.parse((RESET_YEAR + 1) + "-01-01", DateTimeFormatter.ISO_DATE);
while (LocalDate.now().isBefore(nextYear)) {
System.out.println(generate()); // 模拟跨年
}
System.out.println(generate()); // XC YY 000000001
}
}
```
这个程序定义了一个静态变量`FORMAT`表示编号的格式,`RESET_YEAR`表示重置的年份。`currentYear`和`currentNumber`表示当前的年份和编号。
`generate`方法首先获取当前的日期,如果当前年份与`currentYear`不同,说明已经跨年,需要重置编号,将`currentYear`设置为当前年份,将`currentNumber`设置为0。然后将`currentNumber`递增,使用`String.format`将其格式化为指定的格式,返回生成的编号。
程序的`main`方法测试了多次调用`generate`方法,模拟了跨年的情况,验证了编号的生成和重置。