gpt4 book ai didi

java - 如何使用java在int字段的左侧添加零

转载 作者:行者123 更新时间:2023-11-30 06:01:23 25 4
gpt4 key购买 nike

我正在尝试将个人号码与当前日期进行比较以获取该人的年龄。

当前的问题是,如果我的个人号码中有零,它会被删除,所以我无法解析它。

        for (int i = 0; i <= personList.size(); i++) {

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String date = formatter.format(new Date());

String temp = personList.get(i).getCPR();
int year = Integer.parseInt((temp.substring(4, 6)));
if (year < 20) {
year += 2000;
} else {
year += 1900;
}

int month = Integer.parseInt(temp.substring(2, 4));
int day = Integer.parseInt(temp.substring(0, 2));

/*if (month if month don't start with zero){
add 0 to month on the left
}
same goes for day*/


String birthday = year + "-" + month + "-" + day;

LocalDate date1 = LocalDate.parse(birthday);
LocalDate date2 = LocalDate.parse(date);

long age = date1.until(date2, ChronoUnit.YEARS);

System.out.println(age);
}

这是我遇到的错误

线程“main”中的异常 java.time.format.DateTimeParseException:无法在索引 5 处解析文本“1995-1-13”

我希望 1995-1-13 阅读 1995-01-13

最佳答案

您想要的格式化程序是“yyyy-M-d”,它将处理单位数和两位数值:

 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d");
String temp ="1995-1-13";

LocalDate date1 = LocalDate.parse(temp, formatter);
long age = date1.until(LocalDateTime.now(), ChronoUnit.YEARS);
System.out.println(age);

输出:

 24

这是根据 JDK docs :

Number: If the count of letters is one, then the value is output using the minimum number of digits and without padding. Otherwise, the count of digits is used as the width of the output field, with the value zero-padded as necessary.

如果您使用的是 Java 8+,请勿使用 SimpleDateFormat 类。我假设您使用的是 Java 8,因为您使用了 LocalDate 类。另外,不要使用 String#substring 和硬编码索引来分隔日期组件,而是使用 DateTimeFormatter#ofPatternString 日期解析为 >本地日期

关于java - 如何使用java在int字段的左侧添加零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57833348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com